! function(t, e) {
	"object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define
		.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).echarts = {})
}(this, function(t) {
	"use strict";
	var m = function(t, e) {
		return (m = Object.setPrototypeOf || ({
				__proto__: []
			}
			instanceof Array ? function(t, e) {
				t.__proto__ = e
			} : function(t, e) {
				for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n])
			}))(t, e)
	};

	function u(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError("Class extends value " + String(e) +
			" is not a constructor or null");

		function n() {
			this.constructor = t
		}
		m(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n)
	}
	var v = function() {
			this.firefox = !1, this.ie = !1, this.edge = !1, this.newEdge = !1, this.weChat = !1
		},
		w = new function() {
			this.browser = new v, this.node = !1, this.wxa = !1, this.worker = !1, this.svgSupported = !1, this
				.touchEventsSupported = !1, this.pointerEventsSupported = !1, this.domSupported = !1, this
				.transformSupported = !1, this.transform3dSupported = !1, this.hasGlobalWindow = "undefined" !=
				typeof window
		};
	"object" == typeof wx && false && "function" == typeof wx.getSystemInfoSync ? (w.wxa = !0, w.touchEventsSupported = !0) :
		"undefined" == typeof document && "undefined" != typeof self ? w.worker = !0 : "undefined" ==
		typeof navigator || 0 === navigator.userAgent.indexOf("Node.js") ? (w.node = !0, w.svgSupported = !0) : (J =
			navigator.userAgent, re = (Gt = w).browser, ot = J.match(/Firefox\/([\d.]+)/), L = J.match(
				/MSIE\s([\d.]+)/) || J.match(/Trident\/.+?rv:(([\d.]+))/), Q = J.match(/Edge?\/([\d.]+)/), J =
			/micromessenger/i.test(J), ot && (re.firefox = !0, re.version = ot[1]), L && (re.ie = !0, re.version =
				L[1]), Q && (re.edge = !0, re.version = Q[1], re.newEdge = 18 < +Q[1].split(".")[0]), J && (re
				.weChat = !0), Gt.svgSupported = "undefined" != typeof SVGRect, Gt.touchEventsSupported =
			"ontouchstart" in window && !re.ie && !re.edge, Gt.pointerEventsSupported = "onpointerdown" in window &&
			(re.edge || re.ie && 11 <= +re.version), Gt.domSupported = "undefined" != typeof document, ot = document
			.documentElement.style, Gt.transform3dSupported = (re.ie && "transition" in ot || re.edge ||
				"WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix || "MozPerspective" in ot) && !(
				"OTransition" in ot), Gt.transformSupported = Gt.transform3dSupported || re.ie && 9 <= +re.version);
	var K = "12px sans-serif";
	var _, x, b = function(t) {
			var e = {};
			if ("undefined" != typeof JSON)
				for (var n = 0; n < t.length; n++) {
					var i = String.fromCharCode(n + 32),
						r = (t.charCodeAt(n) - 20) / 100;
					e[i] = r
				}
			return e
		}("007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"),
		U = {
			createCanvas: function() {
				return "undefined" != typeof document && document.createElement("canvas")
			},
			measureText: function(t, e) {
				if (_ || (n = U.createCanvas(), _ = n && n.getContext("2d")), _) return x !== e && (x = _.font =
					e || K), _.measureText(t);
				t = t || "", e = e || K;
				var n = /(\d+)px/.exec(e),
					i = n && +n[1] || 12,
					r = 0;
				if (0 <= e.indexOf("mono")) r = i * t.length;
				else
					for (var o = 0; o < t.length; o++) {
						var a = b[t[o]];
						r += null == a ? i : a * i
					}
				return {
					width: r
				}
			},
			loadImage: function(t, e, n) {
				var i = new Image;
				return i.onload = e, i.onerror = n, i.src = t, i
			}
		};

	function M(t) {
		for (var e in U) t[e] && (U[e] = t[e])
	}
	var T = ut(["Function", "RegExp", "Date", "Error", "CanvasGradient", "CanvasPattern", "Image", "Canvas"],
			function(t, e) {
				return t["[object " + e + "]"] = !0, t
			}, {}),
		I = ut(["Int8", "Uint8", "Uint8Clamped", "Int16", "Uint16", "Int32", "Uint32", "Float32", "Float64"],
			function(t, e) {
				return t["[object " + e + "Array]"] = !0, t
			}, {}),
		A = Object.prototype.toString,
		L = Array.prototype,
		Y = L.forEach,
		q = L.filter,
		Z = L.slice,
		$ = L.map,
		Q = function() {}.constructor,
		J = Q ? Q.prototype : null,
		tt = "__proto__",
		et = 2311;

	function nt() {
		return et++
	}

	function it() {
		for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
		"undefined" != typeof console && console.error.apply(console, t)
	}

	function y(t) {
		if (null == t || "object" != typeof t) return t;
		var e = t,
			n = A.call(t);
		if ("[object Array]" === n) {
			if (!kt(t))
				for (var e = [], i = 0, r = t.length; i < r; i++) e[i] = y(t[i])
		} else if (I[n]) {
			if (!kt(t)) {
				var o = t.constructor;
				if (o.from) e = o.from(t);
				else {
					e = new o(t.length);
					for (i = 0, r = t.length; i < r; i++) e[i] = t[i]
				}
			}
		} else if (!T[n] && !kt(t) && !yt(t))
			for (var a in e = {}, t) t.hasOwnProperty(a) && a !== tt && (e[a] = y(t[a]));
		return e
	}

	function d(t, e, n) {
		if (!O(e) || !O(t)) return n ? y(e) : t;
		for (var i in e) {
			var r, o;
			e.hasOwnProperty(i) && i !== tt && (r = t[i], !O(o = e[i]) || !O(r) || F(o) || F(r) || yt(o) || yt(r) ||
				ft(o) || ft(r) || kt(o) || kt(r) ? !n && i in t || (t[i] = y(e[i])) : d(r, o, n))
		}
		return t
	}

	function rt(t, e) {
		for (var n = t[0], i = 1, r = t.length; i < r; i++) n = d(n, t[i], e);
		return n
	}

	function P(t, e) {
		if (Object.assign) Object.assign(t, e);
		else
			for (var n in e) e.hasOwnProperty(n) && n !== tt && (t[n] = e[n]);
		return t
	}

	function z(t, e, n) {
		for (var i = ct(e), r = 0; r < i.length; r++) {
			var o = i[r];
			(n ? null != e[o] : null == t[o]) && (t[o] = e[o])
		}
		return t
	}
	var ot = U.createCanvas;

	function C(t, e) {
		if (t) {
			if (t.indexOf) return t.indexOf(e);
			for (var n = 0, i = t.length; n < i; n++)
				if (t[n] === e) return n
		}
		return -1
	}

	function at(t, e) {
		var n, i = t.prototype;

		function r() {}
		for (n in r.prototype = e.prototype, t.prototype = new r, i) i.hasOwnProperty(n) && (t.prototype[n] = i[n]);
		(t.prototype.constructor = t).superClass = e
	}

	function st(t, e, n) {
		if (t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, Object
			.getOwnPropertyNames)
			for (var i = Object.getOwnPropertyNames(e), r = 0; r < i.length; r++) {
				var o = i[r];
				"constructor" !== o && (n ? null != e[o] : null == t[o]) && (t[o] = e[o])
			} else z(t, e, n)
	}

	function lt(t) {
		return !!t && "string" != typeof t && "number" == typeof t.length
	}

	function E(t, e, n) {
		if (t && e)
			if (t.forEach && t.forEach === Y) t.forEach(e, n);
			else if (t.length === +t.length)
			for (var i = 0, r = t.length; i < r; i++) e.call(n, t[i], i, t);
		else
			for (var o in t) t.hasOwnProperty(o) && e.call(n, t[o], o, t)
	}

	function B(t, e, n) {
		if (!t) return [];
		if (!e) return St(t);
		if (t.map && t.map === $) return t.map(e, n);
		for (var i = [], r = 0, o = t.length; r < o; r++) i.push(e.call(n, t[r], r, t));
		return i
	}

	function ut(t, e, n, i) {
		if (t && e) {
			for (var r = 0, o = t.length; r < o; r++) n = e.call(i, n, t[r], r, t);
			return n
		}
	}

	function ht(t, e, n) {
		if (!t) return [];
		if (!e) return St(t);
		if (t.filter && t.filter === q) return t.filter(e, n);
		for (var i = [], r = 0, o = t.length; r < o; r++) e.call(n, t[r], r, t) && i.push(t[r]);
		return i
	}

	function ct(t) {
		if (!t) return [];
		if (Object.keys) return Object.keys(t);
		var e, n = [];
		for (e in t) t.hasOwnProperty(e) && n.push(e);
		return n
	}
	var pt = J && D(J.bind) ? J.call.bind(J.bind) : function(t, e) {
		for (var n = [], i = 2; i < arguments.length; i++) n[i - 2] = arguments[i];
		return function() {
			return t.apply(e, n.concat(Z.call(arguments)))
		}
	};

	function S(t) {
		for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
		return function() {
			return t.apply(this, e.concat(Z.call(arguments)))
		}
	}

	function F(t) {
		return Array.isArray ? Array.isArray(t) : "[object Array]" === A.call(t)
	}

	function D(t) {
		return "function" == typeof t
	}

	function V(t) {
		return "string" == typeof t
	}

	function dt(t) {
		return "[object String]" === A.call(t)
	}

	function G(t) {
		return "number" == typeof t
	}

	function O(t) {
		var e = typeof t;
		return "function" == e || !!t && "object" == e
	}

	function ft(t) {
		return !!T[A.call(t)]
	}

	function gt(t) {
		return !!I[A.call(t)]
	}

	function yt(t) {
		return "object" == typeof t && "number" == typeof t.nodeType && "object" == typeof t.ownerDocument
	}

	function mt(t) {
		return null != t.colorStops
	}

	function vt(t) {
		return null != t.image
	}

	function _t(t) {
		return "[object RegExp]" === A.call(t)
	}

	function xt(t) {
		return t != t
	}

	function bt() {
		for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
		for (var n = 0, i = t.length; n < i; n++)
			if (null != t[n]) return t[n]
	}

	function R(t, e) {
		return null != t ? t : e
	}

	function wt(t, e, n) {
		return null != t ? t : null != e ? e : n
	}

	function St(t) {
		for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
		return Z.apply(t, e)
	}

	function Mt(t) {
		var e;
		return "number" == typeof t ? [t, t, t, t] : 2 === (e = t.length) ? [t[0], t[1], t[0], t[1]] : 3 === e ? [t[
			0], t[1], t[2], t[1]] : t
	}

	function Tt(t, e) {
		if (!t) throw new Error(e)
	}

	function It(t) {
		return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace(
			/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
	}
	var Ct = "__ec_primitive__";

	function Dt(t) {
		t[Ct] = !0
	}

	function kt(t) {
		return t[Ct]
	}
	Lt.prototype.delete = function(t) {
		var e = this.has(t);
		return e && delete this.data[t], e
	}, Lt.prototype.has = function(t) {
		return this.data.hasOwnProperty(t)
	}, Lt.prototype.get = function(t) {
		return this.data[t]
	}, Lt.prototype.set = function(t, e) {
		return this.data[t] = e, this
	}, Lt.prototype.keys = function() {
		return ct(this.data)
	}, Lt.prototype.forEach = function(t) {
		var e, n = this.data;
		for (e in n) n.hasOwnProperty(e) && t(n[e], e)
	};
	var At = Lt;

	function Lt() {
		this.data = {}
	}
	var Pt = "function" == typeof Map;
	Rt.prototype.hasKey = function(t) {
		return this.data.has(t)
	}, Rt.prototype.get = function(t) {
		return this.data.get(t)
	}, Rt.prototype.set = function(t, e) {
		return this.data.set(t, e), e
	}, Rt.prototype.each = function(n, i) {
		this.data.forEach(function(t, e) {
			n.call(i, t, e)
		})
	}, Rt.prototype.keys = function() {
		var t = this.data.keys();
		return Pt ? Array.from(t) : t
	}, Rt.prototype.removeKey = function(t) {
		this.data.delete(t)
	};
	var Ot = Rt;

	function Rt(t) {
		var n = F(t),
			i = (this.data = new(Pt ? Map : At), this);

		function e(t, e) {
			n ? i.set(t, e) : i.set(e, t)
		}
		t instanceof Rt ? t.each(e) : t && E(t, e)
	}

	function N(t) {
		return new Ot(t)
	}

	function Nt(t, e) {
		for (var n = new t.constructor(t.length + e.length), i = 0; i < t.length; i++) n[i] = t[i];
		for (var r = t.length, i = 0; i < e.length; i++) n[i + r] = e[i];
		return n
	}

	function Et(t, e) {
		var n, t = Object.create ? Object.create(t) : ((n = function() {}).prototype = t, new n);
		return e && P(t, e), t
	}

	function zt(t) {
		t = t.style;
		t.webkitUserSelect = "none", t.userSelect = "none", t.webkitTapHighlightColor = "rgba(0,0,0,0)", t[
			"-webkit-touch-callout"] = "none"
	}

	function Bt(t, e) {
		return t.hasOwnProperty(e)
	}

	function Ft() {}
	var Vt = 180 / Math.PI,
		Gt = Object.freeze({
			__proto__: null,
			HashMap: Ot,
			RADIAN_TO_DEGREE: Vt,
			assert: Tt,
			bind: pt,
			clone: y,
			concatArray: Nt,
			createCanvas: ot,
			createHashMap: N,
			createObject: Et,
			curry: S,
			defaults: z,
			disableUserSelect: zt,
			each: E,
			eqNaN: xt,
			extend: P,
			filter: ht,
			find: function(t, e, n) {
				if (t && e)
					for (var i = 0, r = t.length; i < r; i++)
						if (e.call(n, t[i], i, t)) return t[i]
			},
			guid: nt,
			hasOwn: Bt,
			indexOf: C,
			inherits: at,
			isArray: F,
			isArrayLike: lt,
			isBuiltInObject: ft,
			isDom: yt,
			isFunction: D,
			isGradientObject: mt,
			isImagePatternObject: vt,
			isNumber: G,
			isObject: O,
			isPrimitive: kt,
			isRegExp: _t,
			isString: V,
			isStringSafe: dt,
			isTypedArray: gt,
			keys: ct,
			logError: it,
			map: B,
			merge: d,
			mergeAll: rt,
			mixin: st,
			noop: Ft,
			normalizeCssArray: Mt,
			reduce: ut,
			retrieve: bt,
			retrieve2: R,
			retrieve3: wt,
			setAsPrimitive: Dt,
			slice: St,
			trim: It
		});

	function Ht(t, e) {
		return [t = null == t ? 0 : t, e = null == e ? 0 : e]
	}

	function Wt(t) {
		return [t[0], t[1]]
	}

	function Ut(t, e, n) {
		return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t
	}

	function Xt(t, e, n) {
		return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t
	}

	function Yt(t) {
		return Math.sqrt(qt(t))
	}

	function qt(t) {
		return t[0] * t[0] + t[1] * t[1]
	}

	function Zt(t, e, n) {
		return t[0] = e[0] * n, t[1] = e[1] * n, t
	}

	function jt(t, e) {
		var n = Yt(e);
		return 0 === n ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / n, t[1] = e[1] / n), t
	}

	function Kt(t, e) {
		return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]))
	}
	var $t = Kt;

	function Qt(t, e) {
		return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])
	}
	var Jt = Qt;

	function te(t, e, n, i) {
		return t[0] = e[0] + i * (n[0] - e[0]), t[1] = e[1] + i * (n[1] - e[1]), t
	}

	function ee(t, e, n) {
		var i = e[0],
			e = e[1];
		return t[0] = n[0] * i + n[2] * e + n[4], t[1] = n[1] * i + n[3] * e + n[5], t
	}

	function ne(t, e, n) {
		return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t
	}

	function ie(t, e, n) {
		return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t
	}
	var re = Object.freeze({
			__proto__: null,
			add: Ut,
			applyTransform: ee,
			clone: Wt,
			copy: function(t, e) {
				return t[0] = e[0], t[1] = e[1], t
			},
			create: Ht,
			dist: $t,
			distSquare: Jt,
			distance: Kt,
			distanceSquare: Qt,
			div: function(t, e, n) {
				return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t
			},
			dot: function(t, e) {
				return t[0] * e[0] + t[1] * e[1]
			},
			len: Yt,
			lenSquare: qt,
			length: Yt,
			lengthSquare: qt,
			lerp: te,
			max: ie,
			min: ne,
			mul: function(t, e, n) {
				return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t
			},
			negate: function(t, e) {
				return t[0] = -e[0], t[1] = -e[1], t
			},
			normalize: jt,
			scale: Zt,
			scaleAndAdd: function(t, e, n, i) {
				return t[0] = e[0] + n[0] * i, t[1] = e[1] + n[1] * i, t
			},
			set: function(t, e, n) {
				return t[0] = e, t[1] = n, t
			},
			sub: Xt
		}),
		oe = function(t, e) {
			this.target = t, this.topTarget = e && e.topTarget
		},
		ae = (se.prototype._dragStart = function(t) {
			for (var e = t.target; e && !e.draggable;) e = e.parent || e.__hostTarget;
			e && ((this._draggingTarget = e).dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this
				.handler.dispatchToElement(new oe(e, t), "dragstart", t.event))
		}, se.prototype._drag = function(t) {
			var e, n, i, r, o = this._draggingTarget;
			o && (e = t.offsetX, n = t.offsetY, i = e - this._x, r = n - this._y, this._x = e, this._y = n, o
					.drift(i, r, t), this.handler.dispatchToElement(new oe(o, t), "drag", t.event), i = this
					.handler.findHover(e, n, o).target, r = this._dropTarget, o !== (this._dropTarget = i)) && (
					r && i !== r && this.handler.dispatchToElement(new oe(r, t), "dragleave", t.event), i) &&
				i !== r && this.handler.dispatchToElement(new oe(i, t), "dragenter", t.event)
		}, se.prototype._dragEnd = function(t) {
			var e = this._draggingTarget;
			e && (e.dragging = !1), this.handler.dispatchToElement(new oe(e, t), "dragend", t.event), this
				._dropTarget && this.handler.dispatchToElement(new oe(this._dropTarget, t), "drop", t.event),
				this._draggingTarget = null, this._dropTarget = null
		}, se);

	function se(t) {
		(this.handler = t).on("mousedown", this._dragStart, this), t.on("mousemove", this._drag, this), t.on(
			"mouseup", this._dragEnd, this)
	}
	ue.prototype.on = function(t, e, n, i) {
		this._$handlers || (this._$handlers = {});
		var r = this._$handlers;
		if ("function" == typeof e && (i = n, n = e, e = null), n && t) {
			var o = this._$eventProcessor;
			null != e && o && o.normalizeQuery && (e = o.normalizeQuery(e)), r[t] || (r[t] = []);
			for (var a = 0; a < r[t].length; a++)
				if (r[t][a].h === n) return this;
			o = {
				h: n,
				query: e,
				ctx: i || this,
				callAtLast: n.zrEventfulCallAtLast
			}, e = r[t].length - 1, i = r[t][e];
			i && i.callAtLast ? r[t].splice(e, 0, o) : r[t].push(o)
		}
		return this
	}, ue.prototype.isSilent = function(t) {
		var e = this._$handlers;
		return !e || !e[t] || !e[t].length
	}, ue.prototype.off = function(t, e) {
		var n = this._$handlers;
		if (n)
			if (t)
				if (e) {
					if (n[t]) {
						for (var i = [], r = 0, o = n[t].length; r < o; r++) n[t][r].h !== e && i.push(n[t][r]);
						n[t] = i
					}
					n[t] && 0 === n[t].length && delete n[t]
				} else delete n[t];
		else this._$handlers = {};
		return this
	}, ue.prototype.trigger = function(t) {
		for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
		if (this._$handlers) {
			var i = this._$handlers[t],
				r = this._$eventProcessor;
			if (i)
				for (var o = e.length, a = i.length, s = 0; s < a; s++) {
					var l = i[s];
					if (!r || !r.filter || null == l.query || r.filter(t, l.query)) switch (o) {
						case 0:
							l.h.call(l.ctx);
							break;
						case 1:
							l.h.call(l.ctx, e[0]);
							break;
						case 2:
							l.h.call(l.ctx, e[0], e[1]);
							break;
						default:
							l.h.apply(l.ctx, e)
					}
				}
			r && r.afterTrigger && r.afterTrigger(t)
		}
		return this
	}, ue.prototype.triggerWithContext = function(t) {
		for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
		if (this._$handlers) {
			var i = this._$handlers[t],
				r = this._$eventProcessor;
			if (i)
				for (var o = e.length, a = e[o - 1], s = i.length, l = 0; l < s; l++) {
					var u = i[l];
					if (!r || !r.filter || null == u.query || r.filter(t, u.query)) switch (o) {
						case 0:
							u.h.call(a);
							break;
						case 1:
							u.h.call(a, e[0]);
							break;
						case 2:
							u.h.call(a, e[0], e[1]);
							break;
						default:
							u.h.apply(a, e.slice(1, o - 1))
					}
				}
			r && r.afterTrigger && r.afterTrigger(t)
		}
		return this
	};
	var le = ue;

	function ue(t) {
		t && (this._$eventProcessor = t)
	}
	var he = Math.log(2);

	function ce(t, e, n, i, r, o) {
		var a, s = i + "-" + r,
			l = t.length;
		if (o.hasOwnProperty(s)) return o[s];
		if (1 === e) return a = Math.round(Math.log((1 << l) - 1 & ~r) / he), t[n][a];
		for (var u = i | 1 << n, h = n + 1; i & 1 << h;) h++;
		for (var c = 0, p = 0, d = 0; p < l; p++) {
			var f = 1 << p;
			f & r || (c += (d % 2 ? -1 : 1) * t[n][p] * ce(t, e - 1, h, u, r | f, o), d++)
		}
		return o[s] = c
	}

	function pe(t, e) {
		var n = [
				[t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1]],
				[0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1]],
				[t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3]],
				[0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3]],
				[t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5]],
				[0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5]],
				[t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7]],
				[0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7]]
			],
			i = {},
			r = ce(n, 8, 0, 0, 0, i);
		if (0 !== r) {
			for (var o = [], a = 0; a < 8; a++)
				for (var s = 0; s < 8; s++) null == o[s] && (o[s] = 0), o[s] += ((a + s) % 2 ? -1 : 1) * ce(n, 7,
					0 === a ? 1 : 0, 1 << a, 1 << s, i) / r * e[a];
			return function(t, e, n) {
				var i = e * o[6] + n * o[7] + 1;
				t[0] = (e * o[0] + n * o[1] + o[2]) / i, t[1] = (e * o[3] + n * o[4] + o[5]) / i
			}
		}
	}
	var de = "___zrEVENTSAVED",
		fe = [];

	function ge(t, e, n, i, r) {
		if (e.getBoundingClientRect && w.domSupported && !ye(e)) {
			var o = e[de] || (e[de] = {}),
				e = function(t, e, n) {
					for (var i = n ? "invTrans" : "trans", r = e[i], o = e.srcCoords, a = [], s = [], l = !0, u =
						0; u < 4; u++) {
						var h = t[u].getBoundingClientRect(),
							c = 2 * u,
							p = h.left,
							h = h.top;
						a.push(p, h), l = l && o && p === o[c] && h === o[1 + c], s.push(t[u].offsetLeft, t[u]
							.offsetTop)
					}
					return l && r ? r : (e.srcCoords = a, e[i] = n ? pe(s, a) : pe(a, s))
				}(function(t, e) {
					var n = e.markers;
					if (!n) {
						n = e.markers = [];
						for (var i = ["left", "right"], r = ["top", "bottom"], o = 0; o < 4; o++) {
							var a = document.createElement("div"),
								s = a.style,
								l = o % 2,
								u = (o >> 1) % 2;
							s.cssText = ["position: absolute", "visibility: hidden", "padding: 0", "margin: 0",
								"border-width: 0", "user-select: none", "width:0", "height:0", i[l] + ":0",
								r[u] + ":0", i[1 - l] + ":auto", r[1 - u] + ":auto", ""
							].join("!important;"), t.appendChild(a), n.push(a)
						}
					}
					return n
				}(e, o), o, r);
			if (e) return e(t, n, i), !0
		}
		return !1
	}

	function ye(t) {
		return "CANVAS" === t.nodeName.toUpperCase()
	}
	var me = /([&<>"'])/g,
		ve = {
			"&": "&amp;",
			"<": "&lt;",
			">": "&gt;",
			'"': "&quot;",
			"'": "&#39;"
		};

	function _e(t) {
		return null == t ? "" : (t + "").replace(me, function(t, e) {
			return ve[e]
		})
	}
	var xe = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
		be = [],
		we = w.browser.firefox && +w.browser.version.split(".")[0] < 39;

	function Se(t, e, n, i) {
		return n = n || {}, i ? Me(t, e, n) : we && null != e.layerX && e.layerX !== e.offsetX ? (n.zrX = e.layerX,
			n.zrY = e.layerY) : null != e.offsetX ? (n.zrX = e.offsetX, n.zrY = e.offsetY) : Me(t, e, n), n
	}

	function Me(t, e, n) {
		if (w.domSupported && t.getBoundingClientRect) {
			var i, r = e.clientX,
				e = e.clientY;
			if (ye(t)) return i = t.getBoundingClientRect(), n.zrX = r - i.left, void(n.zrY = e - i.top);
			if (ge(be, t, r, e)) return n.zrX = be[0], void(n.zrY = be[1])
		}
		n.zrX = n.zrY = 0
	}

	function Te(t) {
		return t || window.event
	}

	function Ie(t, e, n) {
		var i;
		return null == (e = Te(e)).zrX && ((i = e.type) && 0 <= i.indexOf("touch") ? (i = ("touchend" !== i ? e
				.targetTouches : e.changedTouches)[0]) && Se(t, i, e, n) : (Se(t, e, e, n), i = function(t) {
				var e = t.wheelDelta;
				if (e) return e;
				var n = t.deltaX,
					t = t.deltaY;
				return null != n && null != t ? 3 * (0 !== t ? Math.abs(t) : Math.abs(n)) * (0 < t || !(t <
					0) && 0 < n ? -1 : 1) : e
			}(e), e.zrDelta = i ? i / 120 : -(e.detail || 0) / 3), t = e.button, null == e.which && void 0 !==
			t && xe.test(e.type)) && (e.which = 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0), e
	}
	var Ce = function(t) {
			t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0
		},
		De = (ke.prototype.recognize = function(t, e, n) {
			return this._doTrack(t, e, n), this._recognize(t)
		}, ke.prototype.clear = function() {
			return this._track.length = 0, this
		}, ke.prototype._doTrack = function(t, e, n) {
			var i = t.touches;
			if (i) {
				for (var r = {
						points: [],
						touches: [],
						target: e,
						event: t
					}, o = 0, a = i.length; o < a; o++) {
					var s = i[o],
						l = Se(n, s, {});
					r.points.push([l.zrX, l.zrY]), r.touches.push(s)
				}
				this._track.push(r)
			}
		}, ke.prototype._recognize = function(t) {
			for (var e in Le)
				if (Le.hasOwnProperty(e)) {
					e = Le[e](this._track, t);
					if (e) return e
				}
		}, ke);

	function ke() {
		this._track = []
	}

	function Ae(t) {
		var e = t[1][0] - t[0][0],
			t = t[1][1] - t[0][1];
		return Math.sqrt(e * e + t * t)
	}
	var Le = {
		pinch: function(t, e) {
			var n, i = t.length;
			if (i) return n = (t[i - 1] || {}).points, (i = (t[i - 2] || {}).points || n) && 1 < i.length &&
				n && 1 < n.length ? (i = Ae(n) / Ae(i), isFinite(i) || (i = 1), e.pinchScale = i, i = [(
					n[0][0] + n[1][0]) / 2, (n[0][1] + n[1][1]) / 2], e.pinchX = i[0], e.pinchY = i[
					1], {
					type: "pinch",
					target: t[0].target,
					event: e
				}) : void 0
		}
	};

	function Pe() {
		return [1, 0, 0, 1, 0, 0]
	}

	function Oe(t) {
		return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t
	}

	function Re(t, e) {
		return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t
	}

	function Ne(t, e, n) {
		var i = e[0] * n[0] + e[2] * n[1],
			r = e[1] * n[0] + e[3] * n[1],
			o = e[0] * n[2] + e[2] * n[3],
			a = e[1] * n[2] + e[3] * n[3],
			s = e[0] * n[4] + e[2] * n[5] + e[4],
			n = e[1] * n[4] + e[3] * n[5] + e[5];
		return t[0] = i, t[1] = r, t[2] = o, t[3] = a, t[4] = s, t[5] = n, t
	}

	function Ee(t, e, n) {
		return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + n[0], t[5] = e[5] + n[1], t
	}

	function ze(t, e, n, i) {
		void 0 === i && (i = [0, 0]);
		var r = e[0],
			o = e[2],
			a = e[4],
			s = e[1],
			l = e[3],
			e = e[5],
			u = Math.sin(n),
			n = Math.cos(n);
		return t[0] = r * n + s * u, t[1] = -r * u + s * n, t[2] = o * n + l * u, t[3] = -o * u + n * l, t[4] = n *
			(a - i[0]) + u * (e - i[1]) + i[0], t[5] = n * (e - i[1]) - u * (a - i[0]) + i[1], t
	}

	function Be(t, e, n) {
		var i = n[0],
			n = n[1];
		return t[0] = e[0] * i, t[1] = e[1] * n, t[2] = e[2] * i, t[3] = e[3] * n, t[4] = e[4] * i, t[5] = e[5] * n,
			t
	}

	function Fe(t, e) {
		var n = e[0],
			i = e[2],
			r = e[4],
			o = e[1],
			a = e[3],
			e = e[5],
			s = n * a - o * i;
		return s ? (t[0] = a * (s = 1 / s), t[1] = -o * s, t[2] = -i * s, t[3] = n * s, t[4] = (i * e - a * r) * s,
			t[5] = (o * r - n * e) * s, t) : null
	}
	var Ve = Object.freeze({
			__proto__: null,
			clone: function(t) {
				var e = Pe();
				return Re(e, t), e
			},
			copy: Re,
			create: Pe,
			identity: Oe,
			invert: Fe,
			mul: Ne,
			rotate: ze,
			scale: Be,
			translate: Ee
		}),
		H = (Ge.prototype.copy = function(t) {
			return this.x = t.x, this.y = t.y, this
		}, Ge.prototype.clone = function() {
			return new Ge(this.x, this.y)
		}, Ge.prototype.set = function(t, e) {
			return this.x = t, this.y = e, this
		}, Ge.prototype.equal = function(t) {
			return t.x === this.x && t.y === this.y
		}, Ge.prototype.add = function(t) {
			return this.x += t.x, this.y += t.y, this
		}, Ge.prototype.scale = function(t) {
			this.x *= t, this.y *= t
		}, Ge.prototype.scaleAndAdd = function(t, e) {
			this.x += t.x * e, this.y += t.y * e
		}, Ge.prototype.sub = function(t) {
			return this.x -= t.x, this.y -= t.y, this
		}, Ge.prototype.dot = function(t) {
			return this.x * t.x + this.y * t.y
		}, Ge.prototype.len = function() {
			return Math.sqrt(this.x * this.x + this.y * this.y)
		}, Ge.prototype.lenSquare = function() {
			return this.x * this.x + this.y * this.y
		}, Ge.prototype.normalize = function() {
			var t = this.len();
			return this.x /= t, this.y /= t, this
		}, Ge.prototype.distance = function(t) {
			var e = this.x - t.x,
				t = this.y - t.y;
			return Math.sqrt(e * e + t * t)
		}, Ge.prototype.distanceSquare = function(t) {
			var e = this.x - t.x,
				t = this.y - t.y;
			return e * e + t * t
		}, Ge.prototype.negate = function() {
			return this.x = -this.x, this.y = -this.y, this
		}, Ge.prototype.transform = function(t) {
			var e, n;
			if (t) return e = this.x, n = this.y, this.x = t[0] * e + t[2] * n + t[4], this.y = t[1] * e + t[
				3] * n + t[5], this
		}, Ge.prototype.toArray = function(t) {
			return t[0] = this.x, t[1] = this.y, t
		}, Ge.prototype.fromArray = function(t) {
			this.x = t[0], this.y = t[1]
		}, Ge.set = function(t, e, n) {
			t.x = e, t.y = n
		}, Ge.copy = function(t, e) {
			t.x = e.x, t.y = e.y
		}, Ge.len = function(t) {
			return Math.sqrt(t.x * t.x + t.y * t.y)
		}, Ge.lenSquare = function(t) {
			return t.x * t.x + t.y * t.y
		}, Ge.dot = function(t, e) {
			return t.x * e.x + t.y * e.y
		}, Ge.add = function(t, e, n) {
			t.x = e.x + n.x, t.y = e.y + n.y
		}, Ge.sub = function(t, e, n) {
			t.x = e.x - n.x, t.y = e.y - n.y
		}, Ge.scale = function(t, e, n) {
			t.x = e.x * n, t.y = e.y * n
		}, Ge.scaleAndAdd = function(t, e, n, i) {
			t.x = e.x + n.x * i, t.y = e.y + n.y * i
		}, Ge.lerp = function(t, e, n, i) {
			var r = 1 - i;
			t.x = r * e.x + i * n.x, t.y = r * e.y + i * n.y
		}, Ge);

	function Ge(t, e) {
		this.x = t || 0, this.y = e || 0
	}
	var He = Math.min,
		We = Math.max,
		Ue = new H,
		Xe = new H,
		Ye = new H,
		qe = new H,
		Ze = new H,
		je = new H,
		X = (Ke.prototype.union = function(t) {
			var e = He(t.x, this.x),
				n = He(t.y, this.y);
			isFinite(this.x) && isFinite(this.width) ? this.width = We(t.x + t.width, this.x + this.width) - e :
				this.width = t.width, isFinite(this.y) && isFinite(this.height) ? this.height = We(t.y + t
					.height, this.y + this.height) - n : this.height = t.height, this.x = e, this.y = n
		}, Ke.prototype.applyTransform = function(t) {
			Ke.applyTransform(this, this, t)
		}, Ke.prototype.calculateTransform = function(t) {
			var e = t.width / this.width,
				n = t.height / this.height,
				i = Pe();
			return Ee(i, i, [-this.x, -this.y]), Be(i, i, [e, n]), Ee(i, i, [t.x, t.y]), i
		}, Ke.prototype.intersect = function(t, e) {
			if (!t) return !1;
			t instanceof Ke || (t = Ke.create(t));
			var n, i, r, o, a, s, l, u, h = this,
				c = h.x,
				p = h.x + h.width,
				d = h.y,
				h = h.y + h.height,
				f = t.x,
				g = t.x + t.width,
				y = t.y,
				t = t.y + t.height,
				m = !(p < f || g < c || h < y || t < d);
			return e && (n = 1 / 0, i = 0, r = Math.abs(p - f), o = Math.abs(g - c), a = Math.abs(h - y), s =
				Math.abs(t - d), l = Math.min(r, o), u = Math.min(a, s), p < f || g < c ? i < l && (i = l,
					r < o ? H.set(je, -r, 0) : H.set(je, o, 0)) : l < n && (n = l, r < o ? H.set(Ze, r, 0) :
					H.set(Ze, -o, 0)), h < y || t < d ? i < u && (i = u, a < s ? H.set(je, 0, -a) : H.set(
					je, 0, s)) : l < n && (n = l, a < s ? H.set(Ze, 0, a) : H.set(Ze, 0, -s))), e && H.copy(
				e, m ? Ze : je), m
		}, Ke.prototype.contain = function(t, e) {
			var n = this;
			return t >= n.x && t <= n.x + n.width && e >= n.y && e <= n.y + n.height
		}, Ke.prototype.clone = function() {
			return new Ke(this.x, this.y, this.width, this.height)
		}, Ke.prototype.copy = function(t) {
			Ke.copy(this, t)
		}, Ke.prototype.plain = function() {
			return {
				x: this.x,
				y: this.y,
				width: this.width,
				height: this.height
			}
		}, Ke.prototype.isFinite = function() {
			return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height)
		}, Ke.prototype.isZero = function() {
			return 0 === this.width || 0 === this.height
		}, Ke.create = function(t) {
			return new Ke(t.x, t.y, t.width, t.height)
		}, Ke.copy = function(t, e) {
			t.x = e.x, t.y = e.y, t.width = e.width, t.height = e.height
		}, Ke.applyTransform = function(t, e, n) {
			var i, r, o, a;
			n ? n[1] < 1e-5 && -1e-5 < n[1] && n[2] < 1e-5 && -1e-5 < n[2] ? (i = n[0], r = n[3], o = n[4], a =
				n[5], t.x = e.x * i + o, t.y = e.y * r + a, t.width = e.width * i, t.height = e.height * r,
				t.width < 0 && (t.x += t.width, t.width = -t.width), t.height < 0 && (t.y += t.height, t
					.height = -t.height)) : (Ue.x = Ye.x = e.x, Ue.y = qe.y = e.y, Xe.x = qe.x = e.x + e
				.width, Xe.y = Ye.y = e.y + e.height, Ue.transform(n), qe.transform(n), Xe.transform(n), Ye
				.transform(n), t.x = He(Ue.x, Xe.x, Ye.x, qe.x), t.y = He(Ue.y, Xe.y, Ye.y, qe.y), o = We(Ue
					.x, Xe.x, Ye.x, qe.x), a = We(Ue.y, Xe.y, Ye.y, qe.y), t.width = o - t.x, t.height = a -
				t.y) : t !== e && Ke.copy(t, e)
		}, Ke);

	function Ke(t, e, n, i) {
		n < 0 && (t += n, n = -n), i < 0 && (e += i, i = -i), this.x = t, this.y = e, this.width = n, this.height =
			i
	}
	var $e = "silent";

	function Qe() {
		Ce(this.event)
	}
	u(en, Je = le), en.prototype.dispose = function() {}, en.prototype.setCursor = function() {};
	var Je, tn = en;

	function en() {
		var t = null !== Je && Je.apply(this, arguments) || this;
		return t.handler = null, t
	}
	var nn, rn = function(t, e) {
			this.x = t, this.y = e
		},
		on = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
		an = new X(0, 0, 0, 0),
		sn = (u(ln, nn = le), ln.prototype.setHandlerProxy = function(e) {
			this.proxy && this.proxy.dispose(), e && (E(on, function(t) {
				e.on && e.on(t, this[t], this)
			}, this), e.handler = this), this.proxy = e
		}, ln.prototype.mousemove = function(t) {
			var e = t.zrX,
				n = t.zrY,
				i = hn(this, e, n),
				r = this._hovered,
				o = r.target,
				i = (o && !o.__zr && (o = (r = this.findHover(r.x, r.y)).target), this._hovered = i ? new rn(e,
					n) : this.findHover(e, n)),
				e = i.target,
				n = this.proxy;
			n.setCursor && n.setCursor(e ? e.cursor : "default"), o && e !== o && this.dispatchToElement(r,
					"mouseout", t), this.dispatchToElement(i, "mousemove", t), e && e !== o && this
				.dispatchToElement(i, "mouseover", t)
		}, ln.prototype.mouseout = function(t) {
			var e = t.zrEventControl;
			"only_globalout" !== e && this.dispatchToElement(this._hovered, "mouseout", t), "no_globalout" !==
				e && this.trigger("globalout", {
					type: "globalout",
					event: t
				})
		}, ln.prototype.resize = function() {
			this._hovered = new rn(0, 0)
		}, ln.prototype.dispatch = function(t, e) {
			t = this[t];
			t && t.call(this, e)
		}, ln.prototype.dispose = function() {
			this.proxy.dispose(), this.storage = null, this.proxy = null, this.painter = null
		}, ln.prototype.setCursorStyle = function(t) {
			var e = this.proxy;
			e.setCursor && e.setCursor(t)
		}, ln.prototype.dispatchToElement = function(t, e, n) {
			var i = (t = t || {}).target;
			if (!i || !i.silent) {
				for (var r = "on" + e, o = {
						type: e,
						event: n,
						target: (t = t).target,
						topTarget: t.topTarget,
						cancelBubble: !1,
						offsetX: n.zrX,
						offsetY: n.zrY,
						gestureEvent: n.gestureEvent,
						pinchX: n.pinchX,
						pinchY: n.pinchY,
						pinchScale: n.pinchScale,
						wheelDelta: n.zrDelta,
						zrByTouch: n.zrByTouch,
						which: n.which,
						stop: Qe
					}; i && (i[r] && (o.cancelBubble = !!i[r].call(i, o)), i.trigger(e, o), i = i
						.__hostTarget || i.parent, !o.cancelBubble););
				o.cancelBubble || (this.trigger(e, o), this.painter && this.painter.eachOtherLayer && this
					.painter.eachOtherLayer(function(t) {
						"function" == typeof t[r] && t[r].call(t, o), t.trigger && t.trigger(e, o)
					}))
			}
		}, ln.prototype.findHover = function(t, e, n) {
			var i = this.storage.getDisplayList(),
				r = new rn(t, e);
			if (un(i, r, t, e, n), this._pointerSize && !r.target) {
				for (var o = [], a = this._pointerSize, s = a / 2, l = new X(t - s, e - s, a, a), u = i.length -
						1; 0 <= u; u--) {
					var h = i[u];
					h === n || h.ignore || h.ignoreCoarsePointer || h.parent && h.parent.ignoreCoarsePointer ||
						(an.copy(h.getBoundingRect()), h.transform && an.applyTransform(h.transform), an
							.intersect(l) && o.push(h))
				}
				if (o.length)
					for (var c = Math.PI / 12, p = 2 * Math.PI, d = 0; d < s; d += 4)
						for (var f = 0; f < p; f += c)
							if (un(o, r, t + d * Math.cos(f), e + d * Math.sin(f), n), r.target) return r
			}
			return r
		}, ln.prototype.processGesture = function(t, e) {
			this._gestureMgr || (this._gestureMgr = new De);
			var n = this._gestureMgr,
				i = ("start" === e && n.clear(), n.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this
					.proxy.dom));
			"end" === e && n.clear(), i && (e = i.type, t.gestureEvent = e, (n = new rn).target = i.target, this
				.dispatchToElement(n, e, i.event))
		}, ln);

	function ln(t, e, n, i, r) {
		var o = nn.call(this) || this;
		return o._hovered = new rn(0, 0), o.storage = t, o.painter = e, o.painterRoot = i, o._pointerSize = r, n =
			n || new tn, o.proxy = null, o.setHandlerProxy(n), o._draggingMgr = new ae(o), o
	}

	function un(t, e, n, i, r) {
		for (var o = t.length - 1; 0 <= o; o--) {
			var a = t[o],
				s = void 0;
			if (a !== r && !a.ignore && (s = function(t, e, n) {
					if (t[t.rectHover ? "rectContain" : "contain"](e, n)) {
						for (var i = t, r = void 0, o = !1; i;) {
							if (!(o = i.ignoreClip ? !0 : o)) {
								var a = i.getClipPath();
								if (a && !a.contain(e, n)) return !1
							}
							i.silent && (r = !0);
							a = i.__hostTarget, i = a || i.parent
						}
						return !r || $e
					}
					return !1
				}(a, n, i)) && (e.topTarget || (e.topTarget = a), s !== $e)) {
				e.target = a;
				break
			}
		}
	}

	function hn(t, e, n) {
		t = t.painter;
		return e < 0 || e > t.getWidth() || n < 0 || n > t.getHeight()
	}
	E(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(a) {
		sn.prototype[a] = function(t) {
			var e, n, i = t.zrX,
				r = t.zrY,
				o = hn(this, i, r);
			if ("mouseup" === a && o || (n = (e = this.findHover(i, r)).target), "mousedown" === a) this
				._downEl = n, this._downPoint = [t.zrX, t.zrY], this._upEl = n;
			else if ("mouseup" === a) this._upEl = n;
			else if ("click" === a) {
				if (this._downEl !== this._upEl || !this._downPoint || 4 < $t(this._downPoint, [t.zrX, t
						.zrY
					])) return;
				this._downPoint = null
			}
			this.dispatchToElement(e, a, t)
		}
	});
	var cn = 32,
		pn = 7;

	function dn(t, e, n, i) {
		var r = e + 1;
		if (r === n) return 1;
		if (i(t[r++], t[e]) < 0) {
			for (; r < n && i(t[r], t[r - 1]) < 0;) r++;
			var o = t,
				a = e,
				s = r;
			for (s--; a < s;) {
				var l = o[a];
				o[a++] = o[s], o[s--] = l
			}
		} else
			for (; r < n && 0 <= i(t[r], t[r - 1]);) r++;
		return r - e
	}

	function fn(t, e, n, i, r) {
		for (i === e && i++; i < n; i++) {
			for (var o, a = t[i], s = e, l = i; s < l;) r(a, t[o = s + l >>> 1]) < 0 ? l = o : s = 1 + o;
			var u = i - s;
			switch (u) {
				case 3:
					t[s + 3] = t[s + 2];
				case 2:
					t[s + 2] = t[s + 1];
				case 1:
					t[s + 1] = t[s];
					break;
				default:
					for (; 0 < u;) t[s + u] = t[s + u - 1], u--
			}
			t[s] = a
		}
	}

	function gn(t, e, n, i, r, o) {
		var a = 0,
			s = 0,
			l = 1;
		if (0 < o(t, e[n + r])) {
			for (s = i - r; l < s && 0 < o(t, e[n + r + l]);)(l = 1 + ((a = l) << 1)) <= 0 && (l = s);
			s < l && (l = s), a += r, l += r
		} else {
			for (s = r + 1; l < s && o(t, e[n + r - l]) <= 0;)(l = 1 + ((a = l) << 1)) <= 0 && (l = s);
			i = a, a = r - (l = s < l ? s : l), l = r - i
		}
		for (a++; a < l;) {
			var u = a + (l - a >>> 1);
			0 < o(t, e[n + u]) ? a = u + 1 : l = u
		}
		return l
	}

	function yn(t, e, n, i, r, o) {
		var a = 0,
			s = 0,
			l = 1;
		if (o(t, e[n + r]) < 0) {
			for (s = r + 1; l < s && o(t, e[n + r - l]) < 0;)(l = 1 + ((a = l) << 1)) <= 0 && (l = s);
			var u = a,
				a = r - (l = s < l ? s : l),
				l = r - u
		} else {
			for (s = i - r; l < s && 0 <= o(t, e[n + r + l]);)(l = 1 + ((a = l) << 1)) <= 0 && (l = s);
			s < l && (l = s), a += r, l += r
		}
		for (a++; a < l;) {
			var h = a + (l - a >>> 1);
			o(t, e[n + h]) < 0 ? l = h : a = h + 1
		}
		return l
	}

	function mn(A, L) {
		var P, O, R = pn,
			N = 0,
			E = [];

		function e(t) {
			var e = P[t],
				n = O[t],
				i = P[t + 1],
				r = O[t + 1],
				t = (O[t] = n + r, t === N - 3 && (P[t + 1] = P[t + 2], O[t + 1] = O[t + 2]), N--, yn(A[i], A, e, n,
					0, L));
			if (e += t, 0 != (n -= t) && 0 !== (r = gn(A[e + n - 1], A, i, r, r - 1, L)))
				if (n <= r) {
					var o = e,
						a = n,
						t = i,
						s = r,
						l = 0;
					for (l = 0; l < a; l++) E[l] = A[o + l];
					var u = 0,
						h = t,
						c = o;
					if (A[c++] = A[h++], 0 == --s)
						for (l = 0; l < a; l++) A[c + l] = E[u + l];
					else if (1 === a) {
						for (l = 0; l < s; l++) A[c + l] = A[h + l];
						A[c + s] = E[u]
					} else {
						for (var p, d, f, g = R;;) {
							d = p = 0, f = !1;
							do {
								if (L(A[h], E[u]) < 0) {
									if (A[c++] = A[h++], d++, (p = 0) == --s) {
										f = !0;
										break
									}
								} else if (A[c++] = E[u++], p++, d = 0, 1 == --a) {
									f = !0;
									break
								}
							} while ((p | d) < g);
							if (f) break;
							do {
								if (0 !== (p = yn(A[h], E, u, a, 0, L))) {
									for (l = 0; l < p; l++) A[c + l] = E[u + l];
									if (c += p, u += p, (a -= p) <= 1) {
										f = !0;
										break
									}
								}
								if (A[c++] = A[h++], 0 == --s) {
									f = !0;
									break
								}
								if (0 !== (d = gn(E[u], A, h, s, 0, L))) {
									for (l = 0; l < d; l++) A[c + l] = A[h + l];
									if (c += d, h += d, 0 === (s -= d)) {
										f = !0;
										break
									}
								}
								if (A[c++] = E[u++], 1 == --a) {
									f = !0;
									break
								}
							} while (g--, pn <= p || pn <= d);
							if (f) break;
							g < 0 && (g = 0), g += 2
						}
						if ((R = g) < 1 && (R = 1), 1 === a) {
							for (l = 0; l < s; l++) A[c + l] = A[h + l];
							A[c + s] = E[u]
						} else {
							if (0 === a) throw new Error;
							for (l = 0; l < a; l++) A[c + l] = E[u + l]
						}
					}
				} else {
					var y = e,
						m = n,
						v = i,
						_ = r,
						x = 0;
					for (x = 0; x < _; x++) E[x] = A[v + x];
					var b = y + m - 1,
						w = _ - 1,
						S = v + _ - 1,
						M = 0,
						T = 0;
					if (A[S--] = A[b--], 0 == --m)
						for (M = S - (_ - 1), x = 0; x < _; x++) A[M + x] = E[x];
					else if (1 === _) {
						for (T = (S -= m) + 1, M = (b -= m) + 1, x = m - 1; 0 <= x; x--) A[T + x] = A[M + x];
						A[S] = E[w]
					} else {
						for (var I = R;;) {
							var C = 0,
								D = 0,
								k = !1;
							do {
								if (L(E[w], A[b]) < 0) {
									if (A[S--] = A[b--], C++, (D = 0) == --m) {
										k = !0;
										break
									}
								} else if (A[S--] = E[w--], D++, C = 0, 1 == --_) {
									k = !0;
									break
								}
							} while ((C | D) < I);
							if (k) break;
							do {
								if (0 !== (C = m - yn(E[w], A, y, m, m - 1, L))) {
									for (m -= C, T = (S -= C) + 1, M = (b -= C) + 1, x = C - 1; 0 <= x; x--) A[T +
										x] = A[M + x];
									if (0 === m) {
										k = !0;
										break
									}
								}
								if (A[S--] = E[w--], 1 == --_) {
									k = !0;
									break
								}
								if (0 !== (D = _ - gn(A[b], E, 0, _, _ - 1, L))) {
									for (_ -= D, T = (S -= D) + 1, M = (w -= D) + 1, x = 0; x < D; x++) A[T + x] =
										E[M + x];
									if (_ <= 1) {
										k = !0;
										break
									}
								}
								if (A[S--] = A[b--], 0 == --m) {
									k = !0;
									break
								}
							} while (I--, pn <= C || pn <= D);
							if (k) break;
							I < 0 && (I = 0), I += 2
						}
						if ((R = I) < 1 && (R = 1), 1 === _) {
							for (T = (S -= m) + 1, M = (b -= m) + 1, x = m - 1; 0 <= x; x--) A[T + x] = A[M + x];
							A[S] = E[w]
						} else {
							if (0 === _) throw new Error;
							for (M = S - (_ - 1), x = 0; x < _; x++) A[M + x] = E[x]
						}
					}
				}
		}
		return P = [], O = [], {
			mergeRuns: function() {
				for (; 1 < N;) {
					var t = N - 2;
					if (1 <= t && O[t - 1] <= O[t] + O[t + 1] || 2 <= t && O[t - 2] <= O[t] + O[t - 1]) O[
						t - 1] < O[t + 1] && t--;
					else if (O[t] > O[t + 1]) break;
					e(t)
				}
			},
			forceMergeRuns: function() {
				for (; 1 < N;) {
					var t = N - 2;
					0 < t && O[t - 1] < O[t + 1] && t--, e(t)
				}
			},
			pushRun: function(t, e) {
				P[N] = t, O[N] = e, N += 1
			}
		}
	}

	function vn(t, e, n, i) {
		var r = (i = i || t.length) - (n = n || 0);
		if (!(r < 2)) {
			var o = 0;
			if (r < cn) fn(t, n, i, n + (o = dn(t, n, i, e)), e);
			else {
				var a, s = mn(t, e),
					l = function(t) {
						for (var e = 0; cn <= t;) e |= 1 & t, t >>= 1;
						return t + e
					}(r);
				do {} while ((o = dn(t, n, i, e)) < l && (fn(t, n, n + (a = l < (a = r) ? l : r), n + o, e), o = a),
					s.pushRun(n, o), s.mergeRuns(), n += o, 0 !== (r -= o));
				s.forceMergeRuns()
			}
		}
	}
	var _n = 1,
		xn = 4,
		bn = !1;

	function wn() {
		bn || (bn = !0, console.warn(
			"z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))
	}

	function Sn(t, e) {
		return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel
	}
	Tn.prototype.traverse = function(t, e) {
		for (var n = 0; n < this._roots.length; n++) this._roots[n].traverse(t, e)
	}, Tn.prototype.getDisplayList = function(t, e) {
		e = e || !1;
		var n = this._displayList;
		return !t && n.length || this.updateDisplayList(e), n
	}, Tn.prototype.updateDisplayList = function(t) {
		this._displayListLen = 0;
		for (var e = this._roots, n = this._displayList, i = 0, r = e.length; i < r; i++) this
			._updateAndAddDisplayable(e[i], null, t);
		n.length = this._displayListLen, vn(n, Sn)
	}, Tn.prototype._updateAndAddDisplayable = function(t, e, n) {
		if (!t.ignore || n) {
			t.beforeUpdate(), t.update(), t.afterUpdate();
			var i = t.getClipPath();
			if (t.ignoreClip) e = null;
			else if (i) {
				e = e ? e.slice() : [];
				for (var r = i, o = t; r;) r.parent = o, r.updateTransform(), e.push(r), r = (o = r)
					.getClipPath()
			}
			if (t.childrenRef) {
				for (var a = t.childrenRef(), s = 0; s < a.length; s++) {
					var l = a[s];
					t.__dirty && (l.__dirty |= _n), this._updateAndAddDisplayable(l, e, n)
				}
				t.__dirty = 0
			} else {
				i = t;
				e && e.length ? i.__clipPaths = e : i.__clipPaths && 0 < i.__clipPaths.length && (i
						.__clipPaths = []), isNaN(i.z) && (wn(), i.z = 0), isNaN(i.z2) && (wn(), i.z2 = 0),
					isNaN(i.zlevel) && (wn(), i.zlevel = 0), this._displayList[this._displayListLen++] = i
			}
			i = t.getDecalElement && t.getDecalElement(), i = (i && this._updateAndAddDisplayable(i, e, n), t
				.getTextGuideLine()), i = (i && this._updateAndAddDisplayable(i, e, n), t.getTextContent());
			i && this._updateAndAddDisplayable(i, e, n)
		}
	}, Tn.prototype.addRoot = function(t) {
		t.__zr && t.__zr.storage === this || this._roots.push(t)
	}, Tn.prototype.delRoot = function(t) {
		if (t instanceof Array)
			for (var e = 0, n = t.length; e < n; e++) this.delRoot(t[e]);
		else {
			var i = C(this._roots, t);
			0 <= i && this._roots.splice(i, 1)
		}
	}, Tn.prototype.delAllRoots = function() {
		this._roots = [], this._displayList = [], this._displayListLen = 0
	}, Tn.prototype.getRoots = function() {
		return this._roots
	}, Tn.prototype.dispose = function() {
		this._displayList = null, this._roots = null
	};
	var Mn = Tn;

	function Tn() {
		this._roots = [], this._displayList = [], this._displayListLen = 0, this.displayableSortFunc = Sn
	}
	var In = w.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) ||
			window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window
			.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(t) {
			return setTimeout(t, 16)
		},
		Cn = {
			linear: function(t) {
				return t
			},
			quadraticIn: function(t) {
				return t * t
			},
			quadraticOut: function(t) {
				return t * (2 - t)
			},
			quadraticInOut: function(t) {
				return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1)
			},
			cubicIn: function(t) {
				return t * t * t
			},
			cubicOut: function(t) {
				return --t * t * t + 1
			},
			cubicInOut: function(t) {
				return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2)
			},
			quarticIn: function(t) {
				return t * t * t * t
			},
			quarticOut: function(t) {
				return 1 - --t * t * t * t
			},
			quarticInOut: function(t) {
				return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2)
			},
			quinticIn: function(t) {
				return t * t * t * t * t
			},
			quinticOut: function(t) {
				return --t * t * t * t * t + 1
			},
			quinticInOut: function(t) {
				return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2)
			},
			sinusoidalIn: function(t) {
				return 1 - Math.cos(t * Math.PI / 2)
			},
			sinusoidalOut: function(t) {
				return Math.sin(t * Math.PI / 2)
			},
			sinusoidalInOut: function(t) {
				return .5 * (1 - Math.cos(Math.PI * t))
			},
			exponentialIn: function(t) {
				return 0 === t ? 0 : Math.pow(1024, t - 1)
			},
			exponentialOut: function(t) {
				return 1 === t ? 1 : 1 - Math.pow(2, -10 * t)
			},
			exponentialInOut: function(t) {
				return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (2 - Math
					.pow(2, -10 * (t - 1)))
			},
			circularIn: function(t) {
				return 1 - Math.sqrt(1 - t * t)
			},
			circularOut: function(t) {
				return Math.sqrt(1 - --t * t)
			},
			circularInOut: function(t) {
				return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
			},
			elasticIn: function(t) {
				var e, n = .1;
				return 0 === t ? 0 : 1 === t ? 1 : (e = !n || n < 1 ? (n = 1, .1) : .4 * Math.asin(1 / n) / (2 *
					Math.PI), -(n * Math.pow(2, 10 * --t) * Math.sin((t - e) * (2 * Math.PI) / .4)))
			},
			elasticOut: function(t) {
				var e, n = .1;
				return 0 === t ? 0 : 1 === t ? 1 : (e = !n || n < 1 ? (n = 1, .1) : .4 * Math.asin(1 / n) / (2 *
					Math.PI), n * Math.pow(2, -10 * t) * Math.sin((t - e) * (2 * Math.PI) / .4) + 1)
			},
			elasticInOut: function(t) {
				var e, n = .1;
				return 0 === t ? 0 : 1 === t ? 1 : (e = !n || n < 1 ? (n = 1, .1) : .4 * Math.asin(1 / n) / (2 *
					Math.PI), (t *= 2) < 1 ? n * Math.pow(2, 10 * --t) * Math.sin((t - e) * (2 * Math
					.PI) / .4) * -.5 : n * Math.pow(2, -10 * --t) * Math.sin((t - e) * (2 * Math.PI) /
					.4) * .5 + 1)
			},
			backIn: function(t) {
				return t * t * (2.70158 * t - 1.70158)
			},
			backOut: function(t) {
				return --t * t * (2.70158 * t + 1.70158) + 1
			},
			backInOut: function(t) {
				var e = 2.5949095;
				return (t *= 2) < 1 ? t * t * ((1 + e) * t - e) * .5 : .5 * ((t -= 2) * t * ((1 + e) * t + e) +
					2)
			},
			bounceIn: function(t) {
				return 1 - Cn.bounceOut(1 - t)
			},
			bounceOut: function(t) {
				return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t <
					2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t +
					.984375
			},
			bounceInOut: function(t) {
				return t < .5 ? .5 * Cn.bounceIn(2 * t) : .5 * Cn.bounceOut(2 * t - 1) + .5
			}
		},
		Dn = Math.pow,
		kn = Math.sqrt,
		An = 1e-8,
		Ln = kn(3),
		Pn = 1 / 3,
		On = Ht(),
		Rn = Ht(),
		Nn = Ht();

	function En(t) {
		return -An < t && t < An
	}

	function zn(t) {
		return An < t || t < -An
	}

	function Bn(t, e, n, i, r) {
		var o = 1 - r;
		return o * o * (o * t + 3 * r * e) + r * r * (r * i + 3 * o * n)
	}

	function Fn(t, e, n, i, r) {
		var o = 1 - r;
		return 3 * (((e - t) * o + 2 * (n - e) * r) * o + (i - n) * r * r)
	}

	function Vn(t, e, n, i, r, o) {
		var a, s, i = i + 3 * (e - n) - t,
			n = 3 * (n - 2 * e + t),
			e = 3 * (e - t),
			t = t - r,
			r = n * n - 3 * i * e,
			l = n * e - 9 * i * t,
			t = e * e - 3 * n * t,
			u = 0;
		return En(r) && En(l) ? En(n) ? o[0] = 0 : 0 <= (a = -e / n) && a <= 1 && (o[u++] = a) : En(e = l * l - 4 *
			r * t) ? (s = -(t = l / r) / 2, 0 <= (a = -n / i + t) && a <= 1 && (o[u++] = a), 0 <= s && s <= 1 &&
			(o[u++] = s)) : 0 < e ? (e = r * n + 1.5 * i * (-l - (t = kn(e))), 0 <= (a = (-n - ((t = (t = r *
			n + 1.5 * i * (-l + t)) < 0 ? -Dn(-t, Pn) : Dn(t, Pn)) + (e = e < 0 ? -Dn(-e, Pn) :
			Dn(e, Pn)))) / (3 * i)) && a <= 1 && (o[u++] = a)) : (t = (2 * r * n - 3 * i * l) / (2 * kn(r * r *
				r)), e = Math.acos(t) / 3, a = (-n - 2 * (l = kn(r)) * (t = Math.cos(e))) / (3 * i), s = (-n +
				l * (t + Ln * Math.sin(e))) / (3 * i), r = (-n + l * (t - Ln * Math.sin(e))) / (3 * i), 0 <=
			a && a <= 1 && (o[u++] = a), 0 <= s && s <= 1 && (o[u++] = s), 0 <= r && r <= 1 && (o[u++] = r)), u
	}

	function Gn(t, e, n, i, r) {
		var o, a = 6 * n - 12 * e + 6 * t,
			i = 9 * e + 3 * i - 3 * t - 9 * n,
			n = 3 * e - 3 * t,
			e = 0;
		return En(i) ? zn(a) && 0 <= (o = -n / a) && o <= 1 && (r[e++] = o) : En(t = a * a - 4 * i * n) ? r[0] = -
			a / (2 * i) : 0 < t && (t = (-a - (n = kn(t))) / (2 * i), 0 <= (o = (-a + n) / (2 * i)) && o <= 1 && (r[
				e++] = o), 0 <= t) && t <= 1 && (r[e++] = t), e
	}

	function Hn(t, e, n, i, r, o) {
		var a = (e - t) * r + t,
			e = (n - e) * r + e,
			n = (i - n) * r + n,
			s = (e - a) * r + a,
			e = (n - e) * r + e,
			r = (e - s) * r + s;
		o[0] = t, o[1] = a, o[2] = s, o[3] = r, o[4] = r, o[5] = e, o[6] = n, o[7] = i
	}

	function Wn(t, e, n, i, r, o, a, s, l, u, h) {
		var c, p, d, f, g = .005,
			y = 1 / 0;
		On[0] = l, On[1] = u;
		for (var m = 0; m < 1; m += .05) Rn[0] = Bn(t, n, r, a, m), Rn[1] = Bn(e, i, o, s, m), (d = Jt(On, Rn)) <
			y && (c = m, y = d);
		for (var y = 1 / 0, v = 0; v < 32 && !(g < 1e-4); v++) p = c + g, Rn[0] = Bn(t, n, r, a, f = c - g), Rn[1] =
			Bn(e, i, o, s, f), d = Jt(Rn, On), 0 <= f && d < y ? (c = f, y = d) : (Nn[0] = Bn(t, n, r, a, p), Nn[
				1] = Bn(e, i, o, s, p), f = Jt(Nn, On), p <= 1 && f < y ? (c = p, y = f) : g *= .5);
		return h && (h[0] = Bn(t, n, r, a, c), h[1] = Bn(e, i, o, s, c)), kn(y)
	}

	function Un(t, e, n, i) {
		var r = 1 - i;
		return r * (r * t + 2 * i * e) + i * i * n
	}

	function Xn(t, e, n, i) {
		return 2 * ((1 - i) * (e - t) + i * (n - e))
	}

	function Yn(t, e, n) {
		n = t + n - 2 * e;
		return 0 == n ? .5 : (t - e) / n
	}

	function qn(t, e, n, i, r) {
		var o = (e - t) * i + t,
			e = (n - e) * i + e,
			i = (e - o) * i + o;
		r[0] = t, r[1] = o, r[2] = i, r[3] = i, r[4] = e, r[5] = n
	}

	function Zn(t, e, n, i, r, o, a, s, l) {
		var u, h = .005,
			c = 1 / 0;
		On[0] = a, On[1] = s;
		for (var p = 0; p < 1; p += .05) Rn[0] = Un(t, n, r, p), Rn[1] = Un(e, i, o, p), (y = Jt(On, Rn)) < c && (
			u = p, c = y);
		for (var c = 1 / 0, d = 0; d < 32 && !(h < 1e-4); d++) {
			var f = u - h,
				g = u + h,
				y = (Rn[0] = Un(t, n, r, f), Rn[1] = Un(e, i, o, f), Jt(Rn, On));
			0 <= f && y < c ? (u = f, c = y) : (Nn[0] = Un(t, n, r, g), Nn[1] = Un(e, i, o, g), f = Jt(Nn, On), g <=
				1 && f < c ? (u = g, c = f) : h *= .5)
		}
		return l && (l[0] = Un(t, n, r, u), l[1] = Un(e, i, o, u)), kn(c)
	}
	var jn = /cubic-bezier\(([0-9,\.e ]+)\)/;

	function Kn(t) {
		t = t && jn.exec(t);
		if (t) {
			var e, t = t[1].split(","),
				n = +It(t[0]),
				i = +It(t[1]),
				r = +It(t[2]),
				o = +It(t[3]);
			if (!isNaN(n + i + r + o)) return e = [],
				function(t) {
					return t <= 0 ? 0 : 1 <= t ? 1 : Vn(0, n, r, 1, t, e) && Bn(0, i, o, 1, e[0])
				}
		}
	}
	Qn.prototype.step = function(t, e) {
		if (this._inited || (this._startTime = t + this._delay, this._inited = !0), !this._paused) {
			var n = this._life,
				i = t - this._startTime - this._pausedTime,
				r = i / n,
				o = (r < 0 && (r = 0), r = Math.min(r, 1), this.easingFunc),
				o = o ? o(r) : r;
			if (this.onframe(o), 1 === r) {
				if (!this.loop) return !0;
				this._startTime = t - i % n, this._pausedTime = 0, this.onrestart()
			}
			return !1
		}
		this._pausedTime += e
	}, Qn.prototype.pause = function() {
		this._paused = !0
	}, Qn.prototype.resume = function() {
		this._paused = !1
	}, Qn.prototype.setEasing = function(t) {
		this.easing = t, this.easingFunc = D(t) ? t : Cn[t] || Kn(t)
	};
	var $n = Qn;

	function Qn(t) {
		this._inited = !1, this._startTime = 0, this._pausedTime = 0, this._paused = !1, this._life = t.life || 1e3,
			this._delay = t.delay || 0, this.loop = t.loop || !1, this.onframe = t.onframe || Ft, this.ondestroy = t
			.ondestroy || Ft, this.onrestart = t.onrestart || Ft, t.easing && this.setEasing(t.easing)
	}
	var Jn = function(t) {
			this.value = t
		},
		ti = (ei.prototype.insert = function(t) {
			t = new Jn(t);
			return this.insertEntry(t), t
		}, ei.prototype.insertEntry = function(t) {
			this.head ? ((this.tail.next = t).prev = this.tail, t.next = null, this.tail = t) : this.head = this
				.tail = t, this._len++
		}, ei.prototype.remove = function(t) {
			var e = t.prev,
				n = t.next;
			e ? e.next = n : this.head = n, n ? n.prev = e : this.tail = e, t.next = t.prev = null, this._len--
		}, ei.prototype.len = function() {
			return this._len
		}, ei.prototype.clear = function() {
			this.head = this.tail = null, this._len = 0
		}, ei);

	function ei() {
		this._len = 0
	}
	ii.prototype.put = function(t, e) {
		var n, i, r = this._list,
			o = this._map,
			a = null;
		return null == o[t] && (i = r.len(), n = this._lastRemovedEntry, i >= this._maxSize && 0 < i && (i = r
				.head, r.remove(i), delete o[i.key], a = i.value, this._lastRemovedEntry = i), n ? n.value =
			e : n = new Jn(e), n.key = t, r.insertEntry(n), o[t] = n), a
	}, ii.prototype.get = function(t) {
		var t = this._map[t],
			e = this._list;
		if (null != t) return t !== e.tail && (e.remove(t), e.insertEntry(t)), t.value
	}, ii.prototype.clear = function() {
		this._list.clear(), this._map = {}
	}, ii.prototype.len = function() {
		return this._list.len()
	};
	var ni = ii;

	function ii(t) {
		this._list = new ti, this._maxSize = 10, this._map = {}, this._maxSize = t
	}
	var ri = {
		transparent: [0, 0, 0, 0],
		aliceblue: [240, 248, 255, 1],
		antiquewhite: [250, 235, 215, 1],
		aqua: [0, 255, 255, 1],
		aquamarine: [127, 255, 212, 1],
		azure: [240, 255, 255, 1],
		beige: [245, 245, 220, 1],
		bisque: [255, 228, 196, 1],
		black: [0, 0, 0, 1],
		blanchedalmond: [255, 235, 205, 1],
		blue: [0, 0, 255, 1],
		blueviolet: [138, 43, 226, 1],
		brown: [165, 42, 42, 1],
		burlywood: [222, 184, 135, 1],
		cadetblue: [95, 158, 160, 1],
		chartreuse: [127, 255, 0, 1],
		chocolate: [210, 105, 30, 1],
		coral: [255, 127, 80, 1],
		cornflowerblue: [100, 149, 237, 1],
		cornsilk: [255, 248, 220, 1],
		crimson: [220, 20, 60, 1],
		cyan: [0, 255, 255, 1],
		darkblue: [0, 0, 139, 1],
		darkcyan: [0, 139, 139, 1],
		darkgoldenrod: [184, 134, 11, 1],
		darkgray: [169, 169, 169, 1],
		darkgreen: [0, 100, 0, 1],
		darkgrey: [169, 169, 169, 1],
		darkkhaki: [189, 183, 107, 1],
		darkmagenta: [139, 0, 139, 1],
		darkolivegreen: [85, 107, 47, 1],
		darkorange: [255, 140, 0, 1],
		darkorchid: [153, 50, 204, 1],
		darkred: [139, 0, 0, 1],
		darksalmon: [233, 150, 122, 1],
		darkseagreen: [143, 188, 143, 1],
		darkslateblue: [72, 61, 139, 1],
		darkslategray: [47, 79, 79, 1],
		darkslategrey: [47, 79, 79, 1],
		darkturquoise: [0, 206, 209, 1],
		darkviolet: [148, 0, 211, 1],
		deeppink: [255, 20, 147, 1],
		deepskyblue: [0, 191, 255, 1],
		dimgray: [105, 105, 105, 1],
		dimgrey: [105, 105, 105, 1],
		dodgerblue: [30, 144, 255, 1],
		firebrick: [178, 34, 34, 1],
		floralwhite: [255, 250, 240, 1],
		forestgreen: [34, 139, 34, 1],
		fuchsia: [255, 0, 255, 1],
		gainsboro: [220, 220, 220, 1],
		ghostwhite: [248, 248, 255, 1],
		gold: [255, 215, 0, 1],
		goldenrod: [218, 165, 32, 1],
		gray: [128, 128, 128, 1],
		green: [0, 128, 0, 1],
		greenyellow: [173, 255, 47, 1],
		grey: [128, 128, 128, 1],
		honeydew: [240, 255, 240, 1],
		hotpink: [255, 105, 180, 1],
		indianred: [205, 92, 92, 1],
		indigo: [75, 0, 130, 1],
		ivory: [255, 255, 240, 1],
		khaki: [240, 230, 140, 1],
		lavender: [230, 230, 250, 1],
		lavenderblush: [255, 240, 245, 1],
		lawngreen: [124, 252, 0, 1],
		lemonchiffon: [255, 250, 205, 1],
		lightblue: [173, 216, 230, 1],
		lightcoral: [240, 128, 128, 1],
		lightcyan: [224, 255, 255, 1],
		lightgoldenrodyellow: [250, 250, 210, 1],
		lightgray: [211, 211, 211, 1],
		lightgreen: [144, 238, 144, 1],
		lightgrey: [211, 211, 211, 1],
		lightpink: [255, 182, 193, 1],
		lightsalmon: [255, 160, 122, 1],
		lightseagreen: [32, 178, 170, 1],
		lightskyblue: [135, 206, 250, 1],
		lightslategray: [119, 136, 153, 1],
		lightslategrey: [119, 136, 153, 1],
		lightsteelblue: [176, 196, 222, 1],
		lightyellow: [255, 255, 224, 1],
		lime: [0, 255, 0, 1],
		limegreen: [50, 205, 50, 1],
		linen: [250, 240, 230, 1],
		magenta: [255, 0, 255, 1],
		maroon: [128, 0, 0, 1],
		mediumaquamarine: [102, 205, 170, 1],
		mediumblue: [0, 0, 205, 1],
		mediumorchid: [186, 85, 211, 1],
		mediumpurple: [147, 112, 219, 1],
		mediumseagreen: [60, 179, 113, 1],
		mediumslateblue: [123, 104, 238, 1],
		mediumspringgreen: [0, 250, 154, 1],
		mediumturquoise: [72, 209, 204, 1],
		mediumvioletred: [199, 21, 133, 1],
		midnightblue: [25, 25, 112, 1],
		mintcream: [245, 255, 250, 1],
		mistyrose: [255, 228, 225, 1],
		moccasin: [255, 228, 181, 1],
		navajowhite: [255, 222, 173, 1],
		navy: [0, 0, 128, 1],
		oldlace: [253, 245, 230, 1],
		olive: [128, 128, 0, 1],
		olivedrab: [107, 142, 35, 1],
		orange: [255, 165, 0, 1],
		orangered: [255, 69, 0, 1],
		orchid: [218, 112, 214, 1],
		palegoldenrod: [238, 232, 170, 1],
		palegreen: [152, 251, 152, 1],
		paleturquoise: [175, 238, 238, 1],
		palevioletred: [219, 112, 147, 1],
		papayawhip: [255, 239, 213, 1],
		peachpuff: [255, 218, 185, 1],
		peru: [205, 133, 63, 1],
		pink: [255, 192, 203, 1],
		plum: [221, 160, 221, 1],
		powderblue: [176, 224, 230, 1],
		purple: [128, 0, 128, 1],
		red: [255, 0, 0, 1],
		rosybrown: [188, 143, 143, 1],
		royalblue: [65, 105, 225, 1],
		saddlebrown: [139, 69, 19, 1],
		salmon: [250, 128, 114, 1],
		sandybrown: [244, 164, 96, 1],
		seagreen: [46, 139, 87, 1],
		seashell: [255, 245, 238, 1],
		sienna: [160, 82, 45, 1],
		silver: [192, 192, 192, 1],
		skyblue: [135, 206, 235, 1],
		slateblue: [106, 90, 205, 1],
		slategray: [112, 128, 144, 1],
		slategrey: [112, 128, 144, 1],
		snow: [255, 250, 250, 1],
		springgreen: [0, 255, 127, 1],
		steelblue: [70, 130, 180, 1],
		tan: [210, 180, 140, 1],
		teal: [0, 128, 128, 1],
		thistle: [216, 191, 216, 1],
		tomato: [255, 99, 71, 1],
		turquoise: [64, 224, 208, 1],
		violet: [238, 130, 238, 1],
		wheat: [245, 222, 179, 1],
		white: [255, 255, 255, 1],
		whitesmoke: [245, 245, 245, 1],
		yellow: [255, 255, 0, 1],
		yellowgreen: [154, 205, 50, 1]
	};

	function oi(t) {
		return (t = Math.round(t)) < 0 ? 0 : 255 < t ? 255 : t
	}

	function ai(t) {
		return t < 0 ? 0 : 1 < t ? 1 : t
	}

	function si(t) {
		return t.length && "%" === t.charAt(t.length - 1) ? oi(parseFloat(t) / 100 * 255) : oi(parseInt(t, 10))
	}

	function li(t) {
		return t.length && "%" === t.charAt(t.length - 1) ? ai(parseFloat(t) / 100) : ai(parseFloat(t))
	}

	function ui(t, e, n) {
		return n < 0 ? n += 1 : 1 < n && --n, 6 * n < 1 ? t + (e - t) * n * 6 : 2 * n < 1 ? e : 3 * n < 2 ? t + (e -
			t) * (2 / 3 - n) * 6 : t
	}

	function hi(t, e, n) {
		return t + (e - t) * n
	}

	function ci(t, e, n, i, r) {
		return t[0] = e, t[1] = n, t[2] = i, t[3] = r, t
	}

	function pi(t, e) {
		return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t
	}
	var di = new ni(20),
		fi = null;

	function gi(t, e) {
		fi && pi(fi, e), fi = di.put(t, fi || e.slice())
	}

	function yi(t, e) {
		if (t) {
			e = e || [];
			var n = di.get(t);
			if (n) return pi(e, n);
			n = (t += "").replace(/ /g, "").toLowerCase();
			if (n in ri) return pi(e, ri[n]), gi(t, e), e;
			var i = n.length;
			if ("#" === n.charAt(0)) return 4 === i || 5 === i ? 0 <= (r = parseInt(n.slice(1, 4), 16)) && r <=
				4095 ? (ci(e, (3840 & r) >> 4 | (3840 & r) >> 8, 240 & r | (240 & r) >> 4, 15 & r | (15 & r) <<
					4, 5 === i ? parseInt(n.slice(4), 16) / 15 : 1), gi(t, e), e) : void ci(e, 0, 0, 0, 1) :
				7 === i || 9 === i ? 0 <= (r = parseInt(n.slice(1, 7), 16)) && r <= 16777215 ? (ci(e, (
						16711680 & r) >> 16, (65280 & r) >> 8, 255 & r, 9 === i ? parseInt(n.slice(7), 16) /
					255 : 1), gi(t, e), e) : void ci(e, 0, 0, 0, 1) : void 0;
			var r = n.indexOf("("),
				o = n.indexOf(")");
			if (-1 !== r && o + 1 === i) {
				var i = n.substr(0, r),
					a = n.substr(r + 1, o - (r + 1)).split(","),
					s = 1;
				switch (i) {
					case "rgba":
						if (4 !== a.length) return 3 === a.length ? ci(e, +a[0], +a[1], +a[2], 1) : ci(e, 0, 0, 0,
							1);
						s = li(a.pop());
					case "rgb":
						return 3 <= a.length ? (ci(e, si(a[0]), si(a[1]), si(a[2]), 3 === a.length ? s : li(a[3])),
							gi(t, e), e) : void ci(e, 0, 0, 0, 1);
					case "hsla":
						return 4 !== a.length ? void ci(e, 0, 0, 0, 1) : (a[3] = li(a[3]), mi(a, e), gi(t, e), e);
					case "hsl":
						return 3 !== a.length ? void ci(e, 0, 0, 0, 1) : (mi(a, e), gi(t, e), e);
					default:
						return
				}
			}
			ci(e, 0, 0, 0, 1)
		}
	}

	function mi(t, e) {
		var n = (parseFloat(t[0]) % 360 + 360) % 360 / 360,
			i = li(t[1]),
			r = li(t[2]),
			i = r <= .5 ? r * (i + 1) : r + i - r * i,
			r = 2 * r - i;
		return ci(e = e || [], oi(255 * ui(r, i, n + 1 / 3)), oi(255 * ui(r, i, n)), oi(255 * ui(r, i, n - 1 / 3)),
			1), 4 === t.length && (e[3] = t[3]), e
	}

	function vi(t, e) {
		var n = yi(t);
		if (n) {
			for (var i = 0; i < 3; i++) n[i] = e < 0 ? n[i] * (1 - e) | 0 : (255 - n[i]) * e + n[i] | 0, 255 < n[
				i] ? n[i] = 255 : n[i] < 0 && (n[i] = 0);
			return Si(n, 4 === n.length ? "rgba" : "rgb")
		}
	}

	function _i(t, e, n) {
		var i, r, o;
		if (e && e.length && 0 <= t && t <= 1) return n = n || [], t = t * (e.length - 1), i = Math.floor(t), o =
			Math.ceil(t), r = e[i], e = e[o], n[0] = oi(hi(r[0], e[0], o = t - i)), n[1] = oi(hi(r[1], e[1],
			o)), n[2] = oi(hi(r[2], e[2], o)), n[3] = ai(hi(r[3], e[3], o)), n
	}
	var xi = _i;

	function bi(t, e, n) {
		var i, r, o, a;
		if (e && e.length && 0 <= t && t <= 1) return t = t * (e.length - 1), i = Math.floor(t), r = Math.ceil(t),
			a = yi(e[i]), e = yi(e[r]), a = Si([oi(hi(a[0], e[0], o = t - i)), oi(hi(a[1], e[1], o)), oi(hi(a[
				2], e[2], o)), ai(hi(a[3], e[3], o))], "rgba"), n ? {
				color: a,
				leftIndex: i,
				rightIndex: r,
				value: t
			} : a
	}
	var e = bi;

	function wi(t, e) {
		t = yi(t);
		if (t && null != e) return t[3] = ai(e), Si(t, "rgba")
	}

	function Si(t, e) {
		var n;
		if (t && t.length) return n = t[0] + "," + t[1] + "," + t[2], "rgba" !== e && "hsva" !== e && "hsla" !==
			e || (n += "," + t[3]), e + "(" + n + ")"
	}

	function Mi(t, e) {
		t = yi(t);
		return t ? (.299 * t[0] + .587 * t[1] + .114 * t[2]) * t[3] / 255 + (1 - t[3]) * e : 0
	}
	var Ti = new ni(100);

	function Ii(t) {
		var e;
		return V(t) ? ((e = Ti.get(t)) || (e = vi(t, -.1), Ti.put(t, e)), e) : mt(t) ? ((e = P({}, t)).colorStops =
			B(t.colorStops, function(t) {
				return {
					offset: t.offset,
					color: vi(t.color, -.1)
				}
			}), e) : t
	}
	xi = Object.freeze({
		__proto__: null,
		fastLerp: _i,
		fastMapToColor: xi,
		lerp: bi,
		lift: vi,
		liftColor: Ii,
		lum: Mi,
		mapToColor: e,
		modifyAlpha: wi,
		modifyHSL: function(t, e, n, i) {
			var r = yi(t);
			if (t) return r = function(t) {
					var e, n, i, r, o, a, s, l, u, h;
					if (t) return h = t[0] / 255, e = t[1] / 255, n = t[2] / 255, s = Math.min(h, e,
							n), r = ((i = Math.max(h, e, n)) + s) / 2, 0 == (u = i - s) ? a =
						o = 0 : (a = r < .5 ? u / (i + s) : u / (2 - i - s), s = ((i - h) / 6 +
								u / 2) / u, l = ((i - e) / 6 + u / 2) / u, u = ((i - n) / 6 +
								u / 2) / u, h === i ? o = u - l : e === i ? o = 1 / 3 + s - u :
							n === i && (o = 2 / 3 + l - s), o < 0 && (o += 1), 1 < o && --o),
						h = [360 * o, a, r], null != t[3] && h.push(t[3]), h
				}(r), null != e && (r[0] = (t = e, (t = Math.round(t)) < 0 ? 0 : 360 < t ? 360 :
				t)), null != n && (r[1] = li(n)), null != i && (r[2] = li(i)), Si(mi(r), "rgba")
		},
		parse: yi,
		random: function() {
			return Si([Math.round(255 * Math.random()), Math.round(255 * Math.random()), Math.round(
				255 * Math.random())], "rgb")
		},
		stringify: Si,
		toHex: function(t) {
			if (t = yi(t)) return ((1 << 24) + (t[0] << 16) + (t[1] << 8) + +t[2]).toString(16).slice(1)
		}
	});
	w.hasGlobalWindow && D(window.btoa);
	var Ci = Array.prototype.slice;

	function Di(t, e, n) {
		return (e - t) * n + t
	}

	function ki(t, e, n, i) {
		for (var r = e.length, o = 0; o < r; o++) t[o] = Di(e[o], n[o], i);
		return t
	}

	function Ai(t, e, n, i) {
		for (var r = e.length, o = 0; o < r; o++) t[o] = e[o] + n[o] * i;
		return t
	}

	function Li(t, e, n, i) {
		for (var r = e.length, o = r && e[0].length, a = 0; a < r; a++) {
			t[a] || (t[a] = []);
			for (var s = 0; s < o; s++) t[a][s] = e[a][s] + n[a][s] * i
		}
		return t
	}

	function Pi(t) {
		if (lt(t)) {
			var e = t.length;
			if (lt(t[0])) {
				for (var n = [], i = 0; i < e; i++) n.push(Ci.call(t[i]));
				return n
			}
			return Ci.call(t)
		}
		return t
	}

	function Oi(t) {
		return t[0] = Math.floor(t[0]) || 0, t[1] = Math.floor(t[1]) || 0, t[2] = Math.floor(t[2]) || 0, t[3] =
			null == t[3] ? 1 : t[3], "rgba(" + t.join(",") + ")"
	}

	function Ri(t) {
		return 4 === t || 5 === t
	}

	function Ni(t) {
		return 1 === t || 2 === t
	}
	var Ei = [0, 0, 0, 0],
		zi = (Bi.prototype.isFinished = function() {
			return this._finished
		}, Bi.prototype.setFinished = function() {
			this._finished = !0, this._additiveTrack && this._additiveTrack.setFinished()
		}, Bi.prototype.needsAnimate = function() {
			return 1 <= this.keyframes.length
		}, Bi.prototype.getAdditiveTrack = function() {
			return this._additiveTrack
		}, Bi.prototype.addKeyframe = function(t, e, n) {
			this._needsSort = !0;
			var i, r = this.keyframes,
				o = r.length,
				a = !1,
				s = 6,
				l = e,
				u = (lt(e) ? (1 == (s = i = lt((i = e) && i[0]) ? 2 : 1) && !G(e[0]) || 2 == i && !G(e[0][
					0])) && (a = !0) : G(e) && !xt(e) ? s = 0 : V(e) ? isNaN(+e) ? (i = yi(e)) && (l = i, s =
					3) : s = 0 : mt(e) && ((u = P({}, l)).colorStops = B(e.colorStops, function(t) {
						return {
							offset: t.offset,
							color: yi(t.color)
						}
					}), "linear" === e.type ? s = 4 : "radial" === e.type && (s = 5), l = u), 0 === o ? this
					.valType = s : s === this.valType && 6 !== s || (a = !0), this.discrete = this.discrete ||
					a, {
						time: t,
						value: l,
						rawValue: e,
						percent: 0
					});
			return n && (u.easing = n, u.easingFunc = D(n) ? n : Cn[n] || Kn(n)), r.push(u), u
		}, Bi.prototype.prepare = function(t, e) {
			for (var n = this.keyframes, i = (this._needsSort && n.sort(function(t, e) {
						return t.time - e.time
					}), this.valType), r = n.length, o = n[r - 1], a = this.discrete, s = Ni(i), l = Ri(i), u =
					0; u < r; u++) {
				var h = n[u],
					c = h.value,
					p = o.value;
				if (h.percent = h.time / t, !a)
					if (s && u !== r - 1) {
						x = _ = v = m = y = g = f = d = h = void 0;
						var d = p,
							f = i,
							g = h = c,
							y = d;
						if (g.push && y.push) {
							var h = g.length,
								m = y.length;
							if (h !== m)
								if (m < h) g.length = m;
								else
									for (var v = h; v < m; v++) g.push(1 === f ? y[v] : Ci.call(y[v]));
							for (var _ = g[0] && g[0].length, v = 0; v < g.length; v++)
								if (1 === f) isNaN(g[v]) && (g[v] = y[v]);
								else
									for (var x = 0; x < _; x++) isNaN(g[v][x]) && (g[v][x] = y[v][x])
						}
					} else if (l) {
					T = M = S = w = b = h = d = void 0;
					for (var d = c.colorStops, h = p.colorStops, b = d.length, w = h.length, S = w < b ? h : d,
							h = Math.min(b, w), M = S[h - 1] || {
								color: [0, 0, 0, 0],
								offset: 0
							}, T = h; T < Math.max(b, w); T++) S.push({
						offset: M.offset,
						color: M.color.slice()
					})
				}
			}
			if (!a && 5 !== i && e && this.needsAnimate() && e.needsAnimate() && i === e.valType && !e
				._finished) {
				this._additiveTrack = e;
				for (var I = n[0].value, u = 0; u < r; u++) 0 === i ? n[u].additiveValue = n[u].value - I :
					3 === i ? n[u].additiveValue = Ai([], n[u].value, I, -1) : Ni(i) && (n[u].additiveValue = (
						1 === i ? Ai : Li)([], n[u].value, I, -1))
			}
		}, Bi.prototype.step = function(t, e) {
			if (!this._finished) {
				this._additiveTrack && this._additiveTrack._finished && (this._additiveTrack = null);
				var n, i, r, o, a = null != this._additiveTrack,
					s = a ? "additiveValue" : "value",
					l = this.valType,
					u = this.keyframes,
					h = u.length,
					c = this.propName,
					p = 3 === l,
					d = this._lastFr,
					f = Math.min;
				if (1 === h) n = i = u[0];
				else {
					if (e < 0) g = 0;
					else if (e < this._lastFrP) {
						for (var g = f(d + 1, h - 1); 0 <= g && !(u[g].percent <= e); g--);
						g = f(g, h - 2)
					} else {
						for (g = d; g < h && !(u[g].percent > e); g++);
						g = f(g - 1, h - 2)
					}
					i = u[g + 1], n = u[g]
				}
				n && i && (this._lastFr = g, this._lastFrP = e, d = i.percent - n.percent, r = 0 == d ? 1 : f((
						e - n.percent) / d, 1), i.easingFunc && (r = i.easingFunc(r)), f = a ? this
					._additiveValue : p ? Ei : t[c], (Ni(l) || p) && (f = f || (this._additiveValue = [])),
					this.discrete ? t[c] = (r < 1 ? n : i).rawValue : Ni(l) ? (1 === l ? ki : function(t, e,
						n, i) {
						for (var r = e.length, o = r && e[0].length, a = 0; a < r; a++) {
							t[a] || (t[a] = []);
							for (var s = 0; s < o; s++) t[a][s] = Di(e[a][s], n[a][s], i)
						}
					})(f, n[s], i[s], r) : Ri(l) ? (d = n[s], o = i[s], t[c] = {
						type: (l = 4 === l) ? "linear" : "radial",
						x: Di(d.x, o.x, r),
						y: Di(d.y, o.y, r),
						colorStops: B(d.colorStops, function(t, e) {
							e = o.colorStops[e];
							return {
								offset: Di(t.offset, e.offset, r),
								color: Oi(ki([], t.color, e.color, r))
							}
						}),
						global: o.global
					}, l ? (t[c].x2 = Di(d.x2, o.x2, r), t[c].y2 = Di(d.y2, o.y2, r)) : t[c].r = Di(d.r,
						o.r, r)) : p ? (ki(f, n[s], i[s], r), a || (t[c] = Oi(f))) : (l = Di(n[s], i[s], r),
						a ? this._additiveValue = l : t[c] = l), a) && this._addToTarget(t)
			}
		}, Bi.prototype._addToTarget = function(t) {
			var e = this.valType,
				n = this.propName,
				i = this._additiveValue;
			0 === e ? t[n] = t[n] + i : 3 === e ? (yi(t[n], Ei), Ai(Ei, Ei, i, 1), t[n] = Oi(Ei)) : 1 === e ?
				Ai(t[n], t[n], i, 1) : 2 === e && Li(t[n], t[n], i, 1)
		}, Bi);

	function Bi(t) {
		this.keyframes = [], this.discrete = !1, this._invalid = !1, this._needsSort = !1, this._lastFr = 0, this
			._lastFrP = 0, this.propName = t
	}
	Vi.prototype.getMaxTime = function() {
		return this._maxTime
	}, Vi.prototype.getDelay = function() {
		return this._delay
	}, Vi.prototype.getLoop = function() {
		return this._loop
	}, Vi.prototype.getTarget = function() {
		return this._target
	}, Vi.prototype.changeTarget = function(t) {
		this._target = t
	}, Vi.prototype.when = function(t, e, n) {
		return this.whenWithKeys(t, e, ct(e), n)
	}, Vi.prototype.whenWithKeys = function(t, e, n, i) {
		for (var r = this._tracks, o = 0; o < n.length; o++) {
			var a = n[o];
			if (!(l = r[a])) {
				var s, l = r[a] = new zi(a),
					u = void 0,
					h = this._getAdditiveTrack(a);
				if (h ? (u = (s = (s = h.keyframes)[s.length - 1]) && s.value, 3 === h.valType && (u = u && Oi(
						u))) : u = this._target[a], null == u) continue;
				0 < t && l.addKeyframe(0, Pi(u), i), this._trackKeys.push(a)
			}
			l.addKeyframe(t, Pi(e[a]), i)
		}
		return this._maxTime = Math.max(this._maxTime, t), this
	}, Vi.prototype.pause = function() {
		this._clip.pause(), this._paused = !0
	}, Vi.prototype.resume = function() {
		this._clip.resume(), this._paused = !1
	}, Vi.prototype.isPaused = function() {
		return !!this._paused
	}, Vi.prototype.duration = function(t) {
		return this._maxTime = t, this._force = !0, this
	}, Vi.prototype._doneCallback = function() {
		this._setTracksFinished(), this._clip = null;
		var t = this._doneCbs;
		if (t)
			for (var e = t.length, n = 0; n < e; n++) t[n].call(this)
	}, Vi.prototype._abortedCallback = function() {
		this._setTracksFinished();
		var t = this.animation,
			e = this._abortedCbs;
		if (t && t.removeClip(this._clip), this._clip = null, e)
			for (var n = 0; n < e.length; n++) e[n].call(this)
	}, Vi.prototype._setTracksFinished = function() {
		for (var t = this._tracks, e = this._trackKeys, n = 0; n < e.length; n++) t[e[n]].setFinished()
	}, Vi.prototype._getAdditiveTrack = function(t) {
		var e, n = this._additiveAnimators;
		if (n)
			for (var i = 0; i < n.length; i++) {
				var r = n[i].getTrack(t);
				r && (e = r)
			}
		return e
	}, Vi.prototype.start = function(t) {
		if (!(0 < this._started)) {
			this._started = 1;
			for (var e, o = this, a = [], n = this._maxTime || 0, i = 0; i < this._trackKeys.length; i++) {
				var r = this._trackKeys[i],
					s = this._tracks[r],
					r = this._getAdditiveTrack(r),
					l = s.keyframes,
					u = l.length;
				s.prepare(n, r), s.needsAnimate() && (!this._allowDiscrete && s.discrete ? ((r = l[u - 1]) && (o
					._target[s.propName] = r.rawValue), s.setFinished()) : a.push(s))
			}
			return a.length || this._force ? (e = new $n({
					life: n,
					loop: this._loop,
					delay: this._delay || 0,
					onframe: function(t) {
						o._started = 2;
						var e = o._additiveAnimators;
						if (e) {
							for (var n = !1, i = 0; i < e.length; i++)
								if (e[i]._clip) {
									n = !0;
									break
								} n || (o._additiveAnimators = null)
						}
						for (i = 0; i < a.length; i++) a[i].step(o._target, t);
						var r = o._onframeCbs;
						if (r)
							for (i = 0; i < r.length; i++) r[i](o._target, t)
					},
					ondestroy: function() {
						o._doneCallback()
					}
				}), this._clip = e, this.animation && this.animation.addClip(e), t && e.setEasing(t)) : this
				._doneCallback(), this
		}
	}, Vi.prototype.stop = function(t) {
		var e;
		this._clip && (e = this._clip, t && e.onframe(1), this._abortedCallback())
	}, Vi.prototype.delay = function(t) {
		return this._delay = t, this
	}, Vi.prototype.during = function(t) {
		return t && (this._onframeCbs || (this._onframeCbs = []), this._onframeCbs.push(t)), this
	}, Vi.prototype.done = function(t) {
		return t && (this._doneCbs || (this._doneCbs = []), this._doneCbs.push(t)), this
	}, Vi.prototype.aborted = function(t) {
		return t && (this._abortedCbs || (this._abortedCbs = []), this._abortedCbs.push(t)), this
	}, Vi.prototype.getClip = function() {
		return this._clip
	}, Vi.prototype.getTrack = function(t) {
		return this._tracks[t]
	}, Vi.prototype.getTracks = function() {
		var e = this;
		return B(this._trackKeys, function(t) {
			return e._tracks[t]
		})
	}, Vi.prototype.stopTracks = function(t, e) {
		if (!t.length || !this._clip) return !0;
		for (var n = this._tracks, i = this._trackKeys, r = 0; r < t.length; r++) {
			var o = n[t[r]];
			o && !o.isFinished() && (e ? o.step(this._target, 1) : 1 === this._started && o.step(this._target,
				0), o.setFinished())
		}
		for (var a = !0, r = 0; r < i.length; r++)
			if (!n[i[r]].isFinished()) {
				a = !1;
				break
			} return a && this._abortedCallback(), a
	}, Vi.prototype.saveTo = function(t, e, n) {
		if (t) {
			e = e || this._trackKeys;
			for (var i = 0; i < e.length; i++) {
				var r = e[i],
					o = this._tracks[r];
				o && !o.isFinished() && (o = (o = o.keyframes)[n ? 0 : o.length - 1]) && (t[r] = Pi(o.rawValue))
			}
		}
	}, Vi.prototype.__changeFinalValue = function(t, e) {
		e = e || ct(t);
		for (var n = 0; n < e.length; n++) {
			var i, r = e[n],
				o = this._tracks[r];
			o && 1 < (i = o.keyframes).length && (i = i.pop(), o.addKeyframe(i.time, t[r]), o.prepare(this
				._maxTime, o.getAdditiveTrack()))
		}
	};
	var Fi = Vi;

	function Vi(t, e, n, i) {
		this._tracks = {}, this._trackKeys = [], this._maxTime = 0, this._started = 0, this._clip = null, this
			._target = t, (this._loop = e) && i ? it("Can' use additive animation on looped animation.") : (this
				._additiveAnimators = i, this._allowDiscrete = n)
	}

	function Gi() {
		return (new Date).getTime()
	}
	u(Ui, Hi = le), Ui.prototype.addClip = function(t) {
		t.animation && this.removeClip(t), this._head ? ((this._tail.next = t).prev = this._tail, t.next = null,
			this._tail = t) : this._head = this._tail = t, t.animation = this
	}, Ui.prototype.addAnimator = function(t) {
		t.animation = this;
		t = t.getClip();
		t && this.addClip(t)
	}, Ui.prototype.removeClip = function(t) {
		var e, n;
		t.animation && (e = t.prev, n = t.next, e ? e.next = n : this._head = n, n ? n.prev = e : this._tail =
			e, t.next = t.prev = t.animation = null)
	}, Ui.prototype.removeAnimator = function(t) {
		var e = t.getClip();
		e && this.removeClip(e), t.animation = null
	}, Ui.prototype.update = function(t) {
		for (var e = Gi() - this._pausedTime, n = e - this._time, i = this._head; i;) var r = i.next,
			i = (i.step(e, n) && (i.ondestroy(), this.removeClip(i)), r);
		this._time = e, t || (this.trigger("frame", n), this.stage.update && this.stage.update())
	}, Ui.prototype._startLoop = function() {
		var e = this;
		this._running = !0, In(function t() {
			e._running && (In(t), e._paused || e.update())
		})
	}, Ui.prototype.start = function() {
		this._running || (this._time = Gi(), this._pausedTime = 0, this._startLoop())
	}, Ui.prototype.stop = function() {
		this._running = !1
	}, Ui.prototype.pause = function() {
		this._paused || (this._pauseStart = Gi(), this._paused = !0)
	}, Ui.prototype.resume = function() {
		this._paused && (this._pausedTime += Gi() - this._pauseStart, this._paused = !1)
	}, Ui.prototype.clear = function() {
		for (var t = this._head; t;) {
			var e = t.next;
			t.prev = t.next = t.animation = null, t = e
		}
		this._head = this._tail = null
	}, Ui.prototype.isFinished = function() {
		return null == this._head
	}, Ui.prototype.animate = function(t, e) {
		e = e || {}, this.start();
		t = new Fi(t, e.loop);
		return this.addAnimator(t), t
	};
	var Hi, Wi = Ui;

	function Ui(t) {
		var e = Hi.call(this) || this;
		return e._running = !1, e._time = 0, e._pausedTime = 0, e._pauseStart = 0, e._paused = !1, e.stage = (t =
			t || {}).stage || {}, e
	}
	var Xi, Yi = w.domSupported,
		qi = (Xi = {
			pointerdown: 1,
			pointerup: 1,
			pointermove: 1,
			pointerout: 1
		}, {
			mouse: e = ["click", "dblclick", "mousewheel", "wheel", "mouseout", "mouseup", "mousedown",
				"mousemove", "contextmenu"
			],
			touch: ["touchstart", "touchend", "touchmove"],
			pointer: B(e, function(t) {
				var e = t.replace("mouse", "pointer");
				return Xi.hasOwnProperty(e) ? e : t
			})
		}),
		Zi = ["mousemove", "mouseup"],
		ji = ["pointermove", "pointerup"],
		Ki = !1;

	function $i(t) {
		t = t.pointerType;
		return "pen" === t || "touch" === t
	}

	function Qi(t) {
		t && (t.zrByTouch = !0)
	}

	function Ji(t, e) {
		for (var n = e, i = !1; n && 9 !== n.nodeType && !(i = n.domBelongToZr || n !== e && n === t.painterRoot);)
			n = n.parentNode;
		return i
	}
	var tr = function(t, e) {
			this.stopPropagation = Ft, this.stopImmediatePropagation = Ft, this.preventDefault = Ft, this.type = e
				.type, this.target = this.currentTarget = t.dom, this.pointerType = e.pointerType, this.clientX = e
				.clientX, this.clientY = e.clientY
		},
		er = {
			mousedown: function(t) {
				t = Ie(this.dom, t), this.__mayPointerCapture = [t.zrX, t.zrY], this.trigger("mousedown", t)
			},
			mousemove: function(t) {
				t = Ie(this.dom, t);
				var e = this.__mayPointerCapture;
				!e || t.zrX === e[0] && t.zrY === e[1] || this.__togglePointerCapture(!0), this.trigger(
					"mousemove", t)
			},
			mouseup: function(t) {
				t = Ie(this.dom, t), this.__togglePointerCapture(!1), this.trigger("mouseup", t)
			},
			mouseout: function(t) {
				Ji(this, (t = Ie(this.dom, t)).toElement || t.relatedTarget) || (this.__pointerCapturing && (t
					.zrEventControl = "no_globalout"), this.trigger("mouseout", t))
			},
			wheel: function(t) {
				Ki = !0, t = Ie(this.dom, t), this.trigger("mousewheel", t)
			},
			mousewheel: function(t) {
				Ki || (t = Ie(this.dom, t), this.trigger("mousewheel", t))
			},
			touchstart: function(t) {
				Qi(t = Ie(this.dom, t)), this.__lastTouchMoment = new Date, this.handler.processGesture(t,
					"start"), er.mousemove.call(this, t), er.mousedown.call(this, t)
			},
			touchmove: function(t) {
				Qi(t = Ie(this.dom, t)), this.handler.processGesture(t, "change"), er.mousemove.call(this, t)
			},
			touchend: function(t) {
				Qi(t = Ie(this.dom, t)), this.handler.processGesture(t, "end"), er.mouseup.call(this, t), +
					new Date - +this.__lastTouchMoment < 300 && er.click.call(this, t)
			},
			pointerdown: function(t) {
				er.mousedown.call(this, t)
			},
			pointermove: function(t) {
				$i(t) || er.mousemove.call(this, t)
			},
			pointerup: function(t) {
				er.mouseup.call(this, t)
			},
			pointerout: function(t) {
				$i(t) || er.mouseout.call(this, t)
			}
		},
		nr = (E(["click", "dblclick", "contextmenu"], function(e) {
			er[e] = function(t) {
				t = Ie(this.dom, t), this.trigger(e, t)
			}
		}), {
			pointermove: function(t) {
				$i(t) || nr.mousemove.call(this, t)
			},
			pointerup: function(t) {
				nr.mouseup.call(this, t)
			},
			mousemove: function(t) {
				this.trigger("mousemove", t)
			},
			mouseup: function(t) {
				var e = this.__pointerCapturing;
				this.__togglePointerCapture(!1), this.trigger("mouseup", t), e && (t.zrEventControl =
					"only_globalout", this.trigger("mouseout", t))
			}
		});

	function ir(i, r) {
		var o = r.domHandlers;
		w.pointerEventsSupported ? E(qi.pointer, function(e) {
			or(r, e, function(t) {
				o[e].call(i, t)
			})
		}) : (w.touchEventsSupported && E(qi.touch, function(n) {
			or(r, n, function(t) {
				var e;
				o[n].call(i, t), (e = r).touching = !0, null != e.touchTimer && (clearTimeout(e
					.touchTimer), e.touchTimer = null), e.touchTimer = setTimeout(
			function() {
					e.touching = !1, e.touchTimer = null
				}, 700)
			})
		}), E(qi.mouse, function(e) {
			or(r, e, function(t) {
				t = Te(t), r.touching || o[e].call(i, t)
			})
		}))
	}

	function rr(i, r) {
		function t(n) {
			or(r, n, function(t) {
				var e;
				t = Te(t), Ji(i, t.target) || (e = t, t = Ie(i.dom, new tr(i, e), !0), r.domHandlers[n]
					.call(i, t))
			}, {
				capture: !0
			})
		}
		w.pointerEventsSupported ? E(ji, t) : w.touchEventsSupported || E(Zi, t)
	}

	function or(t, e, n, i) {
		t.mounted[e] = n, t.listenerOpts[e] = i, t.domTarget.addEventListener(e, n, i)
	}

	function ar(t) {
		var e, n, i, r, o, a = t.mounted;
		for (e in a) a.hasOwnProperty(e) && (n = t.domTarget, r = a[i = e], o = t.listenerOpts[e], n
			.removeEventListener(i, r, o));
		t.mounted = {}
	}
	var sr, lr = function(t, e) {
			this.mounted = {}, this.listenerOpts = {}, this.touching = !1, this.domTarget = t, this.domHandlers = e
		},
		ur = (u(hr, sr = le), hr.prototype.dispose = function() {
			ar(this._localHandlerScope), Yi && ar(this._globalHandlerScope)
		}, hr.prototype.setCursor = function(t) {
			this.dom.style && (this.dom.style.cursor = t || "default")
		}, hr.prototype.__togglePointerCapture = function(t) {
			var e;
			this.__mayPointerCapture = null, Yi && +this.__pointerCapturing ^ +t && (this.__pointerCapturing =
				t, e = this._globalHandlerScope, t ? rr(this, e) : ar(e))
		}, hr);

	function hr(t, e) {
		var n = sr.call(this) || this;
		return n.__pointerCapturing = !1, n.dom = t, n.painterRoot = e, n._localHandlerScope = new lr(t, er), Yi &&
			(n._globalHandlerScope = new lr(document, nr)), ir(n, n._localHandlerScope), n
	}
	var e = 1,
		cr = e = w.hasGlobalWindow ? Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI /
			window.screen.logicalXDPI || 1, 1) : e,
		pr = "#333",
		dr = "#ccc",
		fr = Oe;

	function gr(t) {
		return 5e-5 < t || t < -5e-5
	}
	var yr = [],
		mr = [],
		vr = Pe(),
		_r = Math.abs,
		xr = (br.prototype.getLocalTransform = function(t) {
			return br.getLocalTransform(this, t)
		}, br.prototype.setPosition = function(t) {
			this.x = t[0], this.y = t[1]
		}, br.prototype.setScale = function(t) {
			this.scaleX = t[0], this.scaleY = t[1]
		}, br.prototype.setSkew = function(t) {
			this.skewX = t[0], this.skewY = t[1]
		}, br.prototype.setOrigin = function(t) {
			this.originX = t[0], this.originY = t[1]
		}, br.prototype.needLocalTransform = function() {
			return gr(this.rotation) || gr(this.x) || gr(this.y) || gr(this.scaleX - 1) || gr(this.scaleY -
				1) || gr(this.skewX) || gr(this.skewY)
		}, br.prototype.updateTransform = function() {
			var t = this.parent && this.parent.transform,
				e = this.needLocalTransform(),
				n = this.transform;
			e || t ? (n = n || Pe(), e ? this.getLocalTransform(n) : fr(n), t && (e ? Ne(n, t, n) : Re(n, t)),
				this.transform = n, this._resolveGlobalScaleRatio(n)) : n && (fr(n), this.invTransform =
				null)
		}, br.prototype._resolveGlobalScaleRatio = function(t) {
			var e, n, i = this.globalScaleRatio;
			null != i && 1 !== i && (this.getGlobalScale(yr), n = ((yr[1] - (n = yr[1] < 0 ? -1 : 1)) * i + n) /
				yr[1] || 0, t[0] *= i = ((yr[0] - (e = yr[0] < 0 ? -1 : 1)) * i + e) / yr[0] || 0, t[1] *=
				i, t[2] *= n, t[3] *= n), this.invTransform = this.invTransform || Pe(), Fe(this
				.invTransform, t)
		}, br.prototype.getComputedTransform = function() {
			for (var t = this, e = []; t;) e.push(t), t = t.parent;
			for (; t = e.pop();) t.updateTransform();
			return this.transform
		}, br.prototype.setLocalTransform = function(t) {
			var e, n, i, r;
			t && (r = t[0] * t[0] + t[1] * t[1], i = t[2] * t[2] + t[3] * t[3], e = Math.atan2(t[1], t[0]), n =
				Math.PI / 2 + e - Math.atan2(t[3], t[2]), i = Math.sqrt(i) * Math.cos(n), r = Math.sqrt(r),
				this.skewX = n, this.skewY = 0, this.rotation = -e, this.x = +t[4], this.y = +t[5], this
				.scaleX = r, this.scaleY = i, this.originX = 0, this.originY = 0)
		}, br.prototype.decomposeTransform = function() {
			var t, e, n;
			this.transform && (e = this.parent, t = this.transform, e && e.transform && (e.invTransform = e
					.invTransform || Pe(), Ne(mr, e.invTransform, t), t = mr), e = this.originX, n = this
				.originY, (e || n) && (vr[4] = e, vr[5] = n, Ne(mr, t, vr), mr[4] -= e, mr[5] -= n, t = mr),
				this.setLocalTransform(t))
		}, br.prototype.getGlobalScale = function(t) {
			var e = this.transform;
			return t = t || [], e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]), t[1] = Math.sqrt(e[2] * e[2] +
					e[3] * e[3]), e[0] < 0 && (t[0] = -t[0]), e[3] < 0 && (t[1] = -t[1])) : (t[0] = 1, t[1] =
				1), t
		}, br.prototype.transformCoordToLocal = function(t, e) {
			t = [t, e], e = this.invTransform;
			return e && ee(t, t, e), t
		}, br.prototype.transformCoordToGlobal = function(t, e) {
			t = [t, e], e = this.transform;
			return e && ee(t, t, e), t
		}, br.prototype.getLineScale = function() {
			var t = this.transform;
			return t && 1e-10 < _r(t[0] - 1) && 1e-10 < _r(t[3] - 1) ? Math.sqrt(_r(t[0] * t[3] - t[2] * t[
				1])) : 1
		}, br.prototype.copyTransform = function(t) {
			for (var e = this, n = t, i = 0; i < wr.length; i++) {
				var r = wr[i];
				e[r] = n[r]
			}
		}, br.getLocalTransform = function(t, e) {
			e = e || [];
			var n = t.originX || 0,
				i = t.originY || 0,
				r = t.scaleX,
				o = t.scaleY,
				a = t.anchorX,
				s = t.anchorY,
				l = t.rotation || 0,
				u = t.x,
				h = t.y,
				c = t.skewX ? Math.tan(t.skewX) : 0,
				t = t.skewY ? Math.tan(-t.skewY) : 0;
			return n || i || a || s ? (e[4] = -(a = n + a) * r - c * (s = i + s) * o, e[5] = -s * o - t * a *
				r) : e[4] = e[5] = 0, e[0] = r, e[3] = o, e[1] = t * r, e[2] = c * o, l && ze(e, e, l), e[4] +=
				n + u, e[5] += i + h, e
		}, br.initDefaultProps = ((e = br.prototype).scaleX = e.scaleY = e.globalScaleRatio = 1, void(e.x = e
			.y = e.originX = e.originY = e.skewX = e.skewY = e.rotation = e.anchorX = e.anchorY = 0)), br);

	function br() {}
	var wr = ["x", "y", "originX", "originY", "anchorX", "anchorY", "rotation", "scaleX", "scaleY", "skewX",
		"skewY"];
	var Sr = {};

	function Mr(t, e) {
		var n = Sr[e = e || K],
			i = (n = n || (Sr[e] = new ni(500))).get(t);
		return null == i && (i = U.measureText(t, e).width, n.put(t, i)), i
	}

	function Tr(t, e, n, i) {
		t = Mr(t, e), e = kr(e), n = Cr(0, t, n), i = Dr(0, e, i);
		return new X(n, i, t, e)
	}

	function Ir(t, e, n, i) {
		var r = ((t || "") + "").split("\n");
		if (1 === r.length) return Tr(r[0], e, n, i);
		for (var o = new X(0, 0, 0, 0), a = 0; a < r.length; a++) {
			var s = Tr(r[a], e, n, i);
			0 === a ? o.copy(s) : o.union(s)
		}
		return o
	}

	function Cr(t, e, n) {
		return "right" === n ? t -= e : "center" === n && (t -= e / 2), t
	}

	function Dr(t, e, n) {
		return "middle" === n ? t -= e / 2 : "bottom" === n && (t -= e), t
	}

	function kr(t) {
		return Mr("国", t)
	}

	function Ar(t, e) {
		return "string" == typeof t ? 0 <= t.lastIndexOf("%") ? parseFloat(t) / 100 * e : parseFloat(t) : t
	}

	function Lr(t, e, n) {
		var i = e.position || "inside",
			r = null != e.distance ? e.distance : 5,
			o = n.height,
			a = n.width,
			s = o / 2,
			l = n.x,
			u = n.y,
			h = "left",
			c = "top";
		if (i instanceof Array) l += Ar(i[0], n.width), u += Ar(i[1], n.height), c = h = null;
		else switch (i) {
			case "left":
				l -= r, u += s, h = "right", c = "middle";
				break;
			case "right":
				l += r + a, u += s, c = "middle";
				break;
			case "top":
				l += a / 2, u -= r, h = "center", c = "bottom";
				break;
			case "bottom":
				l += a / 2, u += o + r, h = "center";
				break;
			case "inside":
				l += a / 2, u += s, h = "center", c = "middle";
				break;
			case "insideLeft":
				l += r, u += s, c = "middle";
				break;
			case "insideRight":
				l += a - r, u += s, h = "right", c = "middle";
				break;
			case "insideTop":
				l += a / 2, u += r, h = "center";
				break;
			case "insideBottom":
				l += a / 2, u += o - r, h = "center", c = "bottom";
				break;
			case "insideTopLeft":
				l += r, u += r;
				break;
			case "insideTopRight":
				l += a - r, u += r, h = "right";
				break;
			case "insideBottomLeft":
				l += r, u += o - r, c = "bottom";
				break;
			case "insideBottomRight":
				l += a - r, u += o - r, h = "right", c = "bottom"
		}
		return (t = t || {}).x = l, t.y = u, t.align = h, t.verticalAlign = c, t
	}
	var Pr, Or = "__zr_normal__",
		Rr = wr.concat(["ignore"]),
		Nr = ut(wr, function(t, e) {
			return t[e] = !0, t
		}, {
			ignore: !1
		}),
		Er = {},
		zr = new X(0, 0, 0, 0),
		e = (n.prototype._init = function(t) {
				this.attr(t)
			}, n.prototype.drift = function(t, e, n) {
				switch (this.draggable) {
					case "horizontal":
						e = 0;
						break;
					case "vertical":
						t = 0
				}
				var i = this.transform;
				(i = i || (this.transform = [1, 0, 0, 1, 0, 0]))[4] += t, i[5] += e, this.decomposeTransform(), this
					.markRedraw()
			}, n.prototype.beforeUpdate = function() {}, n.prototype.afterUpdate = function() {}, n.prototype
			.update = function() {
				this.updateTransform(), this.__dirty && this.updateInnerText()
			}, n.prototype.updateInnerText = function(t) {
				var e, n, i, r, o, a, s, l, u, h, c = this._textContent;
				!c || c.ignore && !t || (this.textConfig || (this.textConfig = {}), l = (t = this.textConfig).local,
					i = n = void 0, r = !1, (e = c.innerTransformable).parent = l ? this : null, h = !1, e
					.copyTransform(c), null != t.position && (u = zr, t.layoutRect ? u.copy(t.layoutRect) : u
						.copy(this.getBoundingRect()), l || u.applyTransform(this.transform), this
						.calculateTextPosition ? this.calculateTextPosition(Er, t, u) : Lr(Er, t, u), e.x = Er
						.x, e.y = Er.y, n = Er.align, i = Er.verticalAlign, o = t.origin) && null != t
					.rotation && (s = a = void 0, s = "center" === o ? (a = .5 * u.width, .5 * u.height) : (a =
							Ar(o[0], u.width), Ar(o[1], u.height)), h = !0, e.originX = -e.x + a + (l ? 0 : u
						.x), e.originY = -e.y + s + (l ? 0 : u.y)), null != t.rotation && (e.rotation = t
						.rotation), (o = t.offset) && (e.x += o[0], e.y += o[1], h || (e.originX = -o[0], e
						.originY = -o[1])), a = null == t.inside ? "string" == typeof t.position && 0 <= t
					.position.indexOf("inside") : t.inside, s = this._innerTextDefaultStyle || (this
						._innerTextDefaultStyle = {}), h = u = l = void 0, a && this.canBeInsideText() ? (l = t
						.insideFill, u = t.insideStroke, null != l && "auto" !== l || (l = this
							.getInsideTextFill()), null != u && "auto" !== u || (u = this.getInsideTextStroke(
							l), h = !0)) : (l = t.outsideFill, u = t.outsideStroke, null != l && "auto" !== l ||
						(l = this.getOutsideFill()), null != u && "auto" !== u || (u = this.getOutsideStroke(l),
							h = !0)), (l = l || "#000") === s.fill && u === s.stroke && h === s.autoStroke &&
					n === s.align && i === s.verticalAlign || (r = !0, s.fill = l, s.stroke = u, s.autoStroke =
						h, s.align = n, s.verticalAlign = i, c.setDefaultTextStyle(s)), c.__dirty |= _n, r && c
					.dirtyStyle(!0))
			}, n.prototype.canBeInsideText = function() {
				return !0
			}, n.prototype.getInsideTextFill = function() {
				return "#fff"
			}, n.prototype.getInsideTextStroke = function(t) {
				return "#000"
			}, n.prototype.getOutsideFill = function() {
				return this.__zr && this.__zr.isDarkMode() ? dr : pr
			}, n.prototype.getOutsideStroke = function(t) {
				for (var e = this.__zr && this.__zr.getBackgroundColor(), n = "string" == typeof e && yi(e), i = (
						n = n || [255, 255, 255, 1])[3], r = this.__zr.isDarkMode(), o = 0; o < 3; o++) n[o] = n[
					o] * i + (r ? 0 : 255) * (1 - i);
				return n[3] = 1, Si(n, "rgba")
			}, n.prototype.traverse = function(t, e) {}, n.prototype.attrKV = function(t, e) {
				"textConfig" === t ? this.setTextConfig(e) : "textContent" === t ? this.setTextContent(e) :
					"clipPath" === t ? this.setClipPath(e) : "extra" === t ? (this.extra = this.extra || {}, P(this
						.extra, e)) : this[t] = e
			}, n.prototype.hide = function() {
				this.ignore = !0, this.markRedraw()
			}, n.prototype.show = function() {
				this.ignore = !1, this.markRedraw()
			}, n.prototype.attr = function(t, e) {
				if ("string" == typeof t) this.attrKV(t, e);
				else if (O(t))
					for (var n = ct(t), i = 0; i < n.length; i++) {
						var r = n[i];
						this.attrKV(r, t[r])
					}
				return this.markRedraw(), this
			}, n.prototype.saveCurrentToNormalState = function(t) {
				this._innerSaveToNormal(t);
				for (var e = this._normalState, n = 0; n < this.animators.length; n++) {
					var i = this.animators[n],
						r = i.__fromStateTransition;
					i.getLoop() || r && r !== Or || (r = (r = i.targetName) ? e[r] : e, i.saveTo(r))
				}
			}, n.prototype._innerSaveToNormal = function(t) {
				var e = (e = this._normalState) || (this._normalState = {});
				t.textConfig && !e.textConfig && (e.textConfig = this.textConfig), this._savePrimaryToNormal(t, e,
					Rr)
			}, n.prototype._savePrimaryToNormal = function(t, e, n) {
				for (var i = 0; i < n.length; i++) {
					var r = n[i];
					null == t[r] || r in e || (e[r] = this[r])
				}
			}, n.prototype.hasState = function() {
				return 0 < this.currentStates.length
			}, n.prototype.getState = function(t) {
				return this.states[t]
			}, n.prototype.ensureState = function(t) {
				var e = this.states;
				return e[t] || (e[t] = {}), e[t]
			}, n.prototype.clearStates = function(t) {
				this.useState(Or, !1, t)
			}, n.prototype.useState = function(t, e, n, i) {
				var r = t === Or,
					o = this.hasState();
				if (o || !r) {
					var a, o = this.currentStates,
						s = this.stateTransition;
					if (!(0 <= C(o, t)) || !e && 1 !== o.length) {
						if ((a = (a = this.stateProxy && !r ? this.stateProxy(t) : a) || this.states && this.states[
								t]) || r) return r || this.saveCurrentToNormalState(a), (o = !!(a && a.hoverLayer ||
								i)) && this._toggleHoverLayerFlag(!0), this._applyStateObj(t, a, this
								._normalState, e, !n && !this.__inHover && s && 0 < s.duration, s), i = this
							._textContent, s = this._textGuide, i && i.useState(t, e, n, o), s && s.useState(t,
								e, n, o), r ? (this.currentStates = [], this._normalState = {}) : e ? this
							.currentStates.push(t) : this.currentStates = [t], this._updateAnimationTargets(),
							this.markRedraw(), !o && this.__inHover && (this._toggleHoverLayerFlag(!1), this
								.__dirty &= ~_n), a;
						it("State " + t + " not exists.")
					}
				}
			}, n.prototype.useStates = function(t, e, n) {
				if (t.length) {
					var i = [],
						r = this.currentStates,
						o = t.length,
						a = o === r.length;
					if (a)
						for (var s = 0; s < o; s++)
							if (t[s] !== r[s]) {
								a = !1;
								break
							} if (!a) {
						for (s = 0; s < o; s++) {
							var l = t[s],
								u = void 0;
							(u = (u = this.stateProxy ? this.stateProxy(l, t) : u) || this.states[l]) && i.push(u)
						}
						var h = i[o - 1],
							h = !!(h && h.hoverLayer || n),
							n = (h && this._toggleHoverLayerFlag(!0), this._mergeStates(i)),
							c = this.stateTransition,
							n = (this.saveCurrentToNormalState(n), this._applyStateObj(t.join(","), n, this
									._normalState, !1, !e && !this.__inHover && c && 0 < c.duration, c), this
								._textContent),
							c = this._textGuide;
						n && n.useStates(t, e, h), c && c.useStates(t, e, h), this._updateAnimationTargets(), this
							.currentStates = t.slice(), this.markRedraw(), !h && this.__inHover && (this
								._toggleHoverLayerFlag(!1), this.__dirty &= ~_n)
					}
				} else this.clearStates()
			}, n.prototype.isSilent = function() {
				for (var t = this.silent, e = this.parent; !t && e;) {
					if (e.silent) {
						t = !0;
						break
					}
					e = e.parent
				}
				return t
			}, n.prototype._updateAnimationTargets = function() {
				for (var t = 0; t < this.animators.length; t++) {
					var e = this.animators[t];
					e.targetName && e.changeTarget(this[e.targetName])
				}
			}, n.prototype.removeState = function(t) {
				var e, t = C(this.currentStates, t);
				0 <= t && ((e = this.currentStates.slice()).splice(t, 1), this.useStates(e))
			}, n.prototype.replaceState = function(t, e, n) {
				var i = this.currentStates.slice(),
					t = C(i, t),
					r = 0 <= C(i, e);
				0 <= t ? r ? i.splice(t, 1) : i[t] = e : n && !r && i.push(e), this.useStates(i)
			}, n.prototype.toggleState = function(t, e) {
				e ? this.useState(t, !0) : this.removeState(t)
			}, n.prototype._mergeStates = function(t) {
				for (var e, n = {}, i = 0; i < t.length; i++) {
					var r = t[i];
					P(n, r), r.textConfig && P(e = e || {}, r.textConfig)
				}
				return e && (n.textConfig = e), n
			}, n.prototype._applyStateObj = function(t, e, n, i, r, o) {
				for (var a = !(e && i), s = (e && e.textConfig ? (this.textConfig = P({}, (i ? this : n)
						.textConfig), P(this.textConfig, e.textConfig)) : a && n.textConfig && (this
						.textConfig = n.textConfig), {}), l = !1, u = 0; u < Rr.length; u++) {
					var h = Rr[u],
						c = r && Nr[h];
					e && null != e[h] ? c ? (l = !0, s[h] = e[h]) : this[h] = e[h] : a && null != n[h] && (c ? (
						l = !0, s[h] = n[h]) : this[h] = n[h])
				}
				if (!r)
					for (u = 0; u < this.animators.length; u++) {
						var p = this.animators[u],
							d = p.targetName;
						p.getLoop() || p.__changeFinalValue(d ? (e || n)[d] : e || n)
					}
				l && this._transitionState(t, s, o)
			}, n.prototype._attachComponent = function(t) {
				var e;
				t.__zr && !t.__hostTarget || t !== this && ((e = this.__zr) && t.addSelfToZr(e), t.__zr = e, t
					.__hostTarget = this)
			}, n.prototype._detachComponent = function(t) {
				t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__hostTarget = null
			}, n.prototype.getClipPath = function() {
				return this._clipPath
			}, n.prototype.setClipPath = function(t) {
				this._clipPath && this._clipPath !== t && this.removeClipPath(), this._attachComponent(t), this
					._clipPath = t, this.markRedraw()
			}, n.prototype.removeClipPath = function() {
				var t = this._clipPath;
				t && (this._detachComponent(t), this._clipPath = null, this.markRedraw())
			}, n.prototype.getTextContent = function() {
				return this._textContent
			}, n.prototype.setTextContent = function(t) {
				var e = this._textContent;
				e !== t && (e && e !== t && this.removeTextContent(), t.innerTransformable = new xr, this
					._attachComponent(t), this._textContent = t, this.markRedraw())
			}, n.prototype.setTextConfig = function(t) {
				this.textConfig || (this.textConfig = {}), P(this.textConfig, t), this.markRedraw()
			}, n.prototype.removeTextConfig = function() {
				this.textConfig = null, this.markRedraw()
			}, n.prototype.removeTextContent = function() {
				var t = this._textContent;
				t && (t.innerTransformable = null, this._detachComponent(t), this._textContent = null, this
					._innerTextDefaultStyle = null, this.markRedraw())
			}, n.prototype.getTextGuideLine = function() {
				return this._textGuide
			}, n.prototype.setTextGuideLine = function(t) {
				this._textGuide && this._textGuide !== t && this.removeTextGuideLine(), this._attachComponent(t),
					this._textGuide = t, this.markRedraw()
			}, n.prototype.removeTextGuideLine = function() {
				var t = this._textGuide;
				t && (this._detachComponent(t), this._textGuide = null, this.markRedraw())
			}, n.prototype.markRedraw = function() {
				this.__dirty |= _n;
				var t = this.__zr;
				t && (this.__inHover ? t.refreshHover() : t.refresh()), this.__hostTarget && this.__hostTarget
					.markRedraw()
			}, n.prototype.dirty = function() {
				this.markRedraw()
			}, n.prototype._toggleHoverLayerFlag = function(t) {
				this.__inHover = t;
				var e = this._textContent,
					n = this._textGuide;
				e && (e.__inHover = t), n && (n.__inHover = t)
			}, n.prototype.addSelfToZr = function(t) {
				if (this.__zr !== t) {
					this.__zr = t;
					var e = this.animators;
					if (e)
						for (var n = 0; n < e.length; n++) t.animation.addAnimator(e[n]);
					this._clipPath && this._clipPath.addSelfToZr(t), this._textContent && this._textContent
						.addSelfToZr(t), this._textGuide && this._textGuide.addSelfToZr(t)
				}
			}, n.prototype.removeSelfFromZr = function(t) {
				if (this.__zr) {
					this.__zr = null;
					var e = this.animators;
					if (e)
						for (var n = 0; n < e.length; n++) t.animation.removeAnimator(e[n]);
					this._clipPath && this._clipPath.removeSelfFromZr(t), this._textContent && this._textContent
						.removeSelfFromZr(t), this._textGuide && this._textGuide.removeSelfFromZr(t)
				}
			}, n.prototype.animate = function(t, e, n) {
				var i = t ? this[t] : this,
					i = new Fi(i, e, n);
				return t && (i.targetName = t), this.addAnimator(i, t), i
			}, n.prototype.addAnimator = function(n, t) {
				var e = this.__zr,
					i = this;
				n.during(function() {
					i.updateDuringAnimation(t)
				}).done(function() {
					var t = i.animators,
						e = C(t, n);
					0 <= e && t.splice(e, 1)
				}), this.animators.push(n), e && e.animation.addAnimator(n), e && e.wakeUp()
			}, n.prototype.updateDuringAnimation = function(t) {
				this.markRedraw()
			}, n.prototype.stopAnimation = function(t, e) {
				for (var n = this.animators, i = n.length, r = [], o = 0; o < i; o++) {
					var a = n[o];
					t && t !== a.scope ? r.push(a) : a.stop(e)
				}
				return this.animators = r, this
			}, n.prototype.animateTo = function(t, e, n) {
				Fr(this, t, e, n)
			}, n.prototype.animateFrom = function(t, e, n) {
				Fr(this, t, e, n, !0)
			}, n.prototype._transitionState = function(t, e, n, i) {
				for (var r = Fr(this, e, n, i), o = 0; o < r.length; o++) r[o].__fromStateTransition = t
			}, n.prototype.getBoundingRect = function() {
				return null
			}, n.prototype.getPaintRect = function() {
				return null
			}, n.initDefaultProps = ((Pr = n.prototype).type = "element", Pr.name = "", Pr.ignore = Pr.silent = Pr
				.isGroup = Pr.draggable = Pr.dragging = Pr.ignoreClip = Pr.__inHover = !1, Pr.__dirty = _n, void(
					Object.defineProperty && (Br("position", "_legacyPos", "x", "y"), Br("scale", "_legacyScale",
						"scaleX", "scaleY"), Br("origin", "_legacyOrigin", "originX", "originY")))), n);

	function n(t) {
		this.id = et++, this.animators = [], this.currentStates = [], this.states = {}, this._init(t)
	}

	function Br(t, e, n, i) {
		function r(e, t) {
			Object.defineProperty(t, 0, {
				get: function() {
					return e[n]
				},
				set: function(t) {
					e[n] = t
				}
			}), Object.defineProperty(t, 1, {
				get: function() {
					return e[i]
				},
				set: function(t) {
					e[i] = t
				}
			})
		}
		Object.defineProperty(Pr, t, {
			get: function() {
				var t;
				return this[e] || (t = this[e] = [], r(this, t)), this[e]
			},
			set: function(t) {
				this[n] = t[0], this[i] = t[1], this[e] = t, r(this, t)
			}
		})
	}

	function Fr(t, e, n, i, r) {
		function o() {
			u = !0, --l <= 0 && (u ? h && h() : c && c())
		}

		function a() {
			--l <= 0 && (u ? h && h() : c && c())
		}
		var s = [],
			l = (! function t(e, n, i, r, o, a, s, l) {
				var u = ct(r);
				var h = o.duration;
				var c = o.delay;
				var p = o.additive;
				var d = o.setToFinal;
				var f = !O(a);
				var g = e.animators;
				var y = [];
				for (var m = 0; m < u.length; m++) {
					var v = u[m],
						_ = r[v];
					null != _ && null != i[v] && (f || a[v]) ? !O(_) || lt(_) || mt(_) ? y.push(v) : n ? l || (
							i[v] = _, e.updateDuringAnimation(n)) : t(e, v, i[v], _, o, a && a[v], s, l) : l ||
						(i[v] = _, e.updateDuringAnimation(n), y.push(v))
				}
				var x = y.length;
				if (!p && x)
					for (var b, w = 0; w < g.length; w++)(S = g[w]).targetName === n && S.stopTracks(y) && (b =
						C(g, S), g.splice(b, 1));
				o.force || (y = ht(y, function(t) {
					return !Hr(r[t], i[t])
				}), x = y.length);
				if (0 < x || o.force && !s.length) {
					var S, M = void 0,
						T = void 0,
						I = void 0;
					if (l) {
						T = {}, d && (M = {});
						for (w = 0; w < x; w++) {
							v = y[w];
							T[v] = i[v], d ? M[v] = r[v] : i[v] = r[v]
						}
					} else if (d) {
						I = {};
						for (w = 0; w < x; w++) {
							v = y[w];
							I[v] = Pi(i[v]), Gr(i, r, v)
						}
					}(S = new Fi(i, !1, !1, p ? ht(g, function(t) {
						return t.targetName === n
					}) : null)).targetName = n, o.scope && (S.scope = o.scope), d && M && S.whenWithKeys(0, M,
							y), I && S.whenWithKeys(0, I, y), S.whenWithKeys(null == h ? 500 : h, l ? T : r, y)
						.delay(c || 0), e.addAnimator(S, n), s.push(S)
				}
			}(t, "", t, e, n = n || {}, i, s, r), s.length),
			u = !1,
			h = n.done,
			c = n.aborted;
		l || h && h(), 0 < s.length && n.during && s[0].during(function(t, e) {
			n.during(e)
		});
		for (var p = 0; p < s.length; p++) {
			var d = s[p];
			d.done(o), d.aborted(a), n.force && d.duration(n.duration), d.start(n.easing)
		}
		return s
	}

	function Vr(t, e, n) {
		for (var i = 0; i < n; i++) t[i] = e[i]
	}

	function Gr(t, e, n) {
		if (lt(e[n]))
			if (lt(t[n]) || (t[n] = []), gt(e[n])) {
				var i = e[n].length;
				t[n].length !== i && (t[n] = new e[n].constructor(i), Vr(t[n], e[n], i))
			} else {
				var r = e[n],
					o = t[n],
					a = r.length;
				if (lt(r[0]))
					for (var s = r[0].length, l = 0; l < a; l++) o[l] ? Vr(o[l], r[l], s) : o[l] = Array.prototype
						.slice.call(r[l]);
				else Vr(o, r, a);
				o.length = r.length
			}
		else t[n] = e[n]
	}

	function Hr(t, e) {
		return t === e || lt(t) && lt(e) && function(t, e) {
			var n = t.length;
			if (n !== e.length) return !1;
			for (var i = 0; i < n; i++)
				if (t[i] !== e[i]) return !1;
			return !0
		}(t, e)
	}
	st(e, le), st(e, xr);
	u(Xr, Wr = e), Xr.prototype.childrenRef = function() {
		return this._children
	}, Xr.prototype.children = function() {
		return this._children.slice()
	}, Xr.prototype.childAt = function(t) {
		return this._children[t]
	}, Xr.prototype.childOfName = function(t) {
		for (var e = this._children, n = 0; n < e.length; n++)
			if (e[n].name === t) return e[n]
	}, Xr.prototype.childCount = function() {
		return this._children.length
	}, Xr.prototype.add = function(t) {
		return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), this
	}, Xr.prototype.addBefore = function(t, e) {
		var n;
		return t && t !== this && t.parent !== this && e && e.parent === this && 0 <= (e = (n = this._children)
			.indexOf(e)) && (n.splice(e, 0, t), this._doAdd(t)), this
	}, Xr.prototype.replace = function(t, e) {
		t = C(this._children, t);
		return 0 <= t && this.replaceAt(e, t), this
	}, Xr.prototype.replaceAt = function(t, e) {
		var n = this._children,
			i = n[e];
		return t && t !== this && t.parent !== this && t !== i && (n[e] = t, i.parent = null, (n = this.__zr) &&
			i.removeSelfFromZr(n), this._doAdd(t)), this
	}, Xr.prototype._doAdd = function(t) {
		t.parent && t.parent.remove(t);
		var e = (t.parent = this).__zr;
		e && e !== t.__zr && t.addSelfToZr(e), e && e.refresh()
	}, Xr.prototype.remove = function(t) {
		var e = this.__zr,
			n = this._children,
			i = C(n, t);
		return i < 0 || (n.splice(i, 1), t.parent = null, e && t.removeSelfFromZr(e), e && e.refresh()), this
	}, Xr.prototype.removeAll = function() {
		for (var t = this._children, e = this.__zr, n = 0; n < t.length; n++) {
			var i = t[n];
			e && i.removeSelfFromZr(e), i.parent = null
		}
		return t.length = 0, this
	}, Xr.prototype.eachChild = function(t, e) {
		for (var n = this._children, i = 0; i < n.length; i++) {
			var r = n[i];
			t.call(e, r, i)
		}
		return this
	}, Xr.prototype.traverse = function(t, e) {
		for (var n = 0; n < this._children.length; n++) {
			var i = this._children[n],
				r = t.call(e, i);
			i.isGroup && !r && i.traverse(t, e)
		}
		return this
	}, Xr.prototype.addSelfToZr = function(t) {
		Wr.prototype.addSelfToZr.call(this, t);
		for (var e = 0; e < this._children.length; e++) this._children[e].addSelfToZr(t)
	}, Xr.prototype.removeSelfFromZr = function(t) {
		Wr.prototype.removeSelfFromZr.call(this, t);
		for (var e = 0; e < this._children.length; e++) this._children[e].removeSelfFromZr(t)
	}, Xr.prototype.getBoundingRect = function(t) {
		for (var e = new X(0, 0, 0, 0), n = t || this._children, i = [], r = null, o = 0; o < n.length; o++) {
			var a, s = n[o];
			s.ignore || s.invisible || (a = s.getBoundingRect(), (s = s.getLocalTransform(i)) ? (X
					.applyTransform(e, a, s), (r = r || e.clone()).union(e)) : (r = r || a.clone()).union(
				a))
		}
		return r || e
	};
	var Wr, Ur = Xr;

	function Xr(t) {
		var e = Wr.call(this) || this;
		return e.isGroup = !0, e._children = [], e.attr(t), e
	}
	Ur.prototype.type = "group";
	var Yr = {},
		qr = {};
	Kr.prototype.add = function(t) {
		!this._disposed && t && (this.storage.addRoot(t), t.addSelfToZr(this), this.refresh())
	}, Kr.prototype.remove = function(t) {
		!this._disposed && t && (this.storage.delRoot(t), t.removeSelfFromZr(this), this.refresh())
	}, Kr.prototype.configLayer = function(t, e) {
		this._disposed || (this.painter.configLayer && this.painter.configLayer(t, e), this.refresh())
	}, Kr.prototype.setBackgroundColor = function(t) {
		this._disposed || (this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this
		.refresh(), this._backgroundColor = t, this._darkMode = function(t) {
				if (t) {
					if ("string" == typeof t) return Mi(t, 1) < .4;
					if (t.colorStops) {
						for (var e = t.colorStops, n = 0, i = e.length, r = 0; r < i; r++) n += Mi(e[r]
							.color, 1);
						return (n /= i) < .4
					}
				}
				return !1
			}(t))
	}, Kr.prototype.getBackgroundColor = function() {
		return this._backgroundColor
	}, Kr.prototype.setDarkMode = function(t) {
		this._darkMode = t
	}, Kr.prototype.isDarkMode = function() {
		return this._darkMode
	}, Kr.prototype.refreshImmediately = function(t) {
		this._disposed || (t || this.animation.update(!0), this._needsRefresh = !1, this.painter.refresh(), this
			._needsRefresh = !1)
	}, Kr.prototype.refresh = function() {
		this._disposed || (this._needsRefresh = !0, this.animation.start())
	}, Kr.prototype.flush = function() {
		this._disposed || this._flush(!1)
	}, Kr.prototype._flush = function(t) {
		var e, n = Gi(),
			t = (this._needsRefresh && (e = !0, this.refreshImmediately(t)), this._needsRefreshHover && (e = !0,
				this.refreshHoverImmediately()), Gi());
		e ? (this._stillFrameAccum = 0, this.trigger("rendered", {
			elapsedTime: t - n
		})) : 0 < this._sleepAfterStill && (this._stillFrameAccum++, this._stillFrameAccum > this
			._sleepAfterStill) && this.animation.stop()
	}, Kr.prototype.setSleepAfterStill = function(t) {
		this._sleepAfterStill = t
	}, Kr.prototype.wakeUp = function() {
		this._disposed || (this.animation.start(), this._stillFrameAccum = 0)
	}, Kr.prototype.refreshHover = function() {
		this._needsRefreshHover = !0
	}, Kr.prototype.refreshHoverImmediately = function() {
		this._disposed || (this._needsRefreshHover = !1, this.painter.refreshHover && "canvas" === this.painter
			.getType() && this.painter.refreshHover())
	}, Kr.prototype.resize = function(t) {
		this._disposed || (this.painter.resize((t = t || {}).width, t.height), this.handler.resize())
	}, Kr.prototype.clearAnimation = function() {
		this._disposed || this.animation.clear()
	}, Kr.prototype.getWidth = function() {
		if (!this._disposed) return this.painter.getWidth()
	}, Kr.prototype.getHeight = function() {
		if (!this._disposed) return this.painter.getHeight()
	}, Kr.prototype.setCursorStyle = function(t) {
		this._disposed || this.handler.setCursorStyle(t)
	}, Kr.prototype.findHover = function(t, e) {
		if (!this._disposed) return this.handler.findHover(t, e)
	}, Kr.prototype.on = function(t, e, n) {
		return this._disposed || this.handler.on(t, e, n), this
	}, Kr.prototype.off = function(t, e) {
		this._disposed || this.handler.off(t, e)
	}, Kr.prototype.trigger = function(t, e) {
		this._disposed || this.handler.trigger(t, e)
	}, Kr.prototype.clear = function() {
		if (!this._disposed) {
			for (var t = this.storage.getRoots(), e = 0; e < t.length; e++) t[e] instanceof Ur && t[e]
				.removeSelfFromZr(this);
			this.storage.delAllRoots(), this.painter.clear()
		}
	}, Kr.prototype.dispose = function() {
		var t;
		this._disposed || (this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(),
			this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, this
			._disposed = !0, t = this.id, delete qr[t])
	};
	var Zr, jr = Kr;

	function Kr(t, e, n) {
		var i, r = this,
			o = (this._sleepAfterStill = 10, this._stillFrameAccum = 0, this._needsRefresh = !0, this
				._needsRefreshHover = !0, this._darkMode = !1, n = n || {}, this.dom = e, this.id = t, new Mn),
			a = n.renderer || "canvas",
			a = (Yr[a] || (a = ct(Yr)[0]), n.useDirtyRect = null != n.useDirtyRect && n.useDirtyRect, new Yr[a](e,
				o, n, t)),
			e = n.ssr || a.ssrOnly,
			t = (this.storage = o, this.painter = a, w.node || w.worker || e ? null : new ur(a.getViewportRoot(), a
				.root)),
			s = n.useCoarsePointer;
		(null == s || "auto" === s ? w.touchEventsSupported : !!s) && (i = R(n.pointerSize, 44)), this.handler =
			new sn(o, a, t, a.root, i), this.animation = new Wi({
				stage: {
					update: e ? null : function() {
						return r._flush(!0)
					}
				}
			}), e || this.animation.start()
	}

	function $r(t, e) {
		t = new jr(et++, t, e);
		return qr[t.id] = t
	}

	function Qr(t, e) {
		Yr[t] = e
	}

	function Jr(t) {
		Zr = t
	}
	var to = Object.freeze({
			__proto__: null,
			dispose: function(t) {
				t.dispose()
			},
			disposeAll: function() {
				for (var t in qr) qr.hasOwnProperty(t) && qr[t].dispose();
				qr = {}
			},
			getElementSSRData: function(t) {
				if ("function" == typeof Zr) return Zr(t)
			},
			getInstance: function(t) {
				return qr[t]
			},
			init: $r,
			registerPainter: Qr,
			registerSSRDataGetter: Jr,
			version: "5.5.0"
		}),
		eo = 20;

	function no(t, e, n, i) {
		var r = e[0],
			e = e[1],
			o = n[0],
			n = n[1],
			a = e - r,
			s = n - o;
		if (0 == a) return 0 == s ? o : (o + n) / 2;
		if (i)
			if (0 < a) {
				if (t <= r) return o;
				if (e <= t) return n
			} else {
				if (r <= t) return o;
				if (t <= e) return n
			}
		else {
			if (t === r) return o;
			if (t === e) return n
		}
		return (t - r) / a * s + o
	}

	function W(t, e) {
		switch (t) {
			case "center":
			case "middle":
				t = "50%";
				break;
			case "left":
			case "top":
				t = "0%";
				break;
			case "right":
			case "bottom":
				t = "100%"
		}
		return V(t) ? t.replace(/^\s+|\s+$/g, "").match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null ==
			t ? NaN : +t
	}

	function io(t, e, n) {
		return null == e && (e = 10), e = Math.min(Math.max(0, e), eo), t = (+t).toFixed(e), n ? t : +t
	}

	function ro(t) {
		return t.sort(function(t, e) {
			return t - e
		}), t
	}

	function oo(t) {
		if (t = +t, isNaN(t)) return 0;
		if (1e-14 < t)
			for (var e = 1, n = 0; n < 15; n++, e *= 10)
				if (Math.round(t * e) / e === t) return n;
		return ao(t)
	}

	function ao(t) {
		var t = t.toString().toLowerCase(),
			e = t.indexOf("e"),
			n = 0 < e ? +t.slice(e + 1) : 0,
			e = 0 < e ? e : t.length,
			t = t.indexOf(".");
		return Math.max(0, (t < 0 ? 0 : e - 1 - t) - n)
	}

	function so(t, e) {
		var n = Math.log,
			i = Math.LN10,
			t = Math.floor(n(t[1] - t[0]) / i),
			n = Math.round(n(Math.abs(e[1] - e[0])) / i),
			e = Math.min(Math.max(-t + n, 0), 20);
		return isFinite(e) ? e : 20
	}

	function lo(t, e) {
		var n = ut(t, function(t, e) {
			return t + (isNaN(e) ? 0 : e)
		}, 0);
		if (0 === n) return [];
		for (var i = Math.pow(10, e), e = B(t, function(t) {
				return (isNaN(t) ? 0 : t) / n * i * 100
			}), r = 100 * i, o = B(e, function(t) {
				return Math.floor(t)
			}), a = ut(o, function(t, e) {
				return t + e
			}, 0), s = B(e, function(t, e) {
				return t - o[e]
			}); a < r;) {
			for (var l = Number.NEGATIVE_INFINITY, u = null, h = 0, c = s.length; h < c; ++h) s[h] > l && (l = s[h],
				u = h);
			++o[u], s[u] = 0, ++a
		}
		return B(o, function(t) {
			return t / i
		})
	}

	function uo(t) {
		var e = 2 * Math.PI;
		return (t % e + e) % e
	}

	function ho(t) {
		return -1e-4 < t && t < 1e-4
	}
	var co =
		/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;

	function po(t) {
		var e, n;
		return t instanceof Date ? t : V(t) ? (e = co.exec(t)) ? e[8] ? (n = +e[4] || 0, "Z" !== e[8]
			.toUpperCase() && (n -= +e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, n, +(
					e[5] || 0), +e[6] || 0, e[7] ? +e[7].substring(0, 3) : 0))) : new Date(+e[1], +(e[2] || 1) - 1,
				+e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, e[7] ? +e[7].substring(0, 3) : 0) : new Date(
			NaN) : null == t ? new Date(NaN) : new Date(Math.round(t))
	}

	function fo(t) {
		return Math.pow(10, go(t))
	}

	function go(t) {
		var e;
		return 0 === t ? 0 : (e = Math.floor(Math.log(t) / Math.LN10), 10 <= t / Math.pow(10, e) && e++, e)
	}

	function yo(t, e) {
		var n = go(t),
			i = Math.pow(10, n),
			r = t / i,
			e = e ? r < 1.5 ? 1 : r < 2.5 ? 2 : r < 4 ? 3 : r < 7 ? 5 : 10 : r < 1 ? 1 : r < 2 ? 2 : r < 3 ? 3 : r <
			5 ? 5 : 10;
		return t = e * i, -20 <= n ? +t.toFixed(n < 0 ? -n : 0) : t
	}

	function mo(t) {
		var e = parseFloat(t);
		return e == t && (0 !== e || !V(t) || t.indexOf("x") <= 0) ? e : NaN
	}

	function vo(t) {
		return !isNaN(mo(t))
	}

	function _o() {
		return Math.round(9 * Math.random())
	}

	function xo(t, e) {
		return null == t ? e : null == e ? t : t * e / function t(e, n) {
			return 0 === n ? e : t(n, e % n)
		}(t, e)
	}

	function f(t) {
		throw new Error(t)
	}

	function bo(t, e, n) {
		return (e - t) * n + t
	}
	var wo = "series\0";

	function So(t) {
		return t instanceof Array ? t : null == t ? [] : [t]
	}

	function Mo(t, e, n) {
		if (t) {
			t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {};
			for (var i = 0, r = n.length; i < r; i++) {
				var o = n[i];
				!t.emphasis[e].hasOwnProperty(o) && t[e].hasOwnProperty(o) && (t.emphasis[e][o] = t[e][o])
			}
		}
	}
	var To = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor",
		"textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor",
		"shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur",
		"textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth",
		"borderRadius", "padding"
	];

	function Io(t) {
		return !O(t) || F(t) || t instanceof Date ? t : t.value
	}

	function Co(t, n, e) {
		var o, a, s, l, r, u, i, h, c, p, d = "normalMerge" === e,
			f = "replaceMerge" === e,
			g = "replaceAll" === e,
			y = (t = t || [], n = (n || []).slice(), N()),
			e = (E(n, function(t, e) {
				O(t) || (n[e] = null)
			}), function(t, e, n) {
				var i = [];
				if ("replaceAll" !== n)
					for (var r = 0; r < t.length; r++) {
						var o = t[r];
						o && null != o.id && e.set(o.id, r), i.push({
							existing: "replaceMerge" === n || Po(o) ? null : o,
							newOption: null,
							keyInfo: null,
							brandNew: null
						})
					}
				return i
			}(t, y, e));
		return (d || f) && (o = e, a = t, s = y, E(l = n, function(t, e) {
			var n, i, r;
			t && null != t.id && (n = ko(t.id), null != (i = s.get(n))) && (Tt(!(r = o[i]).newOption,
				'Duplicated option on id "' + n + '".'), r.newOption = t, r.existing = a[i], l[
				e] = null)
		})), d && (r = e, E(u = n, function(t, e) {
			if (t && null != t.name)
				for (var n = 0; n < r.length; n++) {
					var i = r[n].existing;
					if (!r[n].newOption && i && (null == i.id || null == t.id) && !Po(t) && !Po(i) &&
						Do("name", i, t)) return r[n].newOption = t, void(u[e] = null)
				}
		})), d || f ? (h = e, c = f, E(n, function(t) {
			if (t) {
				for (var e, n = 0;
					(e = h[n]) && (e.newOption || Po(e.existing) || e.existing && null != t.id && !Do(
						"id", t, e.existing));) n++;
				e ? (e.newOption = t, e.brandNew = c) : h.push({
					newOption: t,
					brandNew: c,
					existing: null,
					keyInfo: null
				}), n++
			}
		})) : g && (i = e, E(n, function(t) {
			i.push({
				newOption: t,
				brandNew: !0,
				existing: null,
				keyInfo: null
			})
		})), t = e, p = N(), E(t, function(t) {
			var e = t.existing;
			e && p.set(e.id, t)
		}), E(t, function(t) {
			var e = t.newOption;
			Tt(!e || null == e.id || !p.get(e.id) || p.get(e.id) === t, "id duplicates: " + (e && e.id)),
				e && null != e.id && p.set(e.id, t), t.keyInfo || (t.keyInfo = {})
		}), E(t, function(t, e) {
			var n = t.existing,
				i = t.newOption,
				r = t.keyInfo;
			if (O(i)) {
				if (r.name = null != i.name ? ko(i.name) : n ? n.name : wo + e, n) r.id = ko(n.id);
				else if (null != i.id) r.id = ko(i.id);
				else
					for (var o = 0; r.id = "\0" + r.name + "\0" + o++, p.get(r.id););
				p.set(r.id, t)
			}
		}), e
	}

	function Do(t, e, n) {
		e = Ao(e[t], null), n = Ao(n[t], null);
		return null != e && null != n && e === n
	}

	function ko(t) {
		return Ao(t, "")
	}

	function Ao(t, e) {
		return null == t ? e : V(t) ? t : G(t) || dt(t) ? t + "" : e
	}

	function Lo(t) {
		t = t.name;
		return !(!t || !t.indexOf(wo))
	}

	function Po(t) {
		return t && null != t.id && 0 === ko(t.id).indexOf("\0_ec_\0")
	}

	function Oo(t, r, o) {
		E(t, function(t) {
			var e, n, i = t.newOption;
			O(i) && (t.keyInfo.mainType = r, t.keyInfo.subType = (e = r, i = i, t = t.existing, n = o, i
				.type || (t ? t.subType : n.determineSubType(e, i))))
		})
	}

	function Ro(e, t) {
		return null != t.dataIndexInside ? t.dataIndexInside : null != t.dataIndex ? F(t.dataIndex) ? B(t.dataIndex,
			function(t) {
				return e.indexOfRawIndex(t)
			}) : e.indexOfRawIndex(t.dataIndex) : null != t.name ? F(t.name) ? B(t.name, function(t) {
			return e.indexOfName(t)
		}) : e.indexOfName(t.name) : void 0
	}

	function No() {
		var e = "__ec_inner_" + Eo++;
		return function(t) {
			return t[e] || (t[e] = {})
		}
	}
	var Eo = _o();

	function zo(n, t, i) {
		var t = Bo(t, i),
			e = t.mainTypeSpecified,
			r = t.queryOptionMap,
			o = t.others,
			a = i ? i.defaultMainType : null;
		return !e && a && r.set(a, {}), r.each(function(t, e) {
			t = Vo(n, e, t, {
				useDefault: a === e,
				enableAll: !i || null == i.enableAll || i.enableAll,
				enableNone: !i || null == i.enableNone || i.enableNone
			});
			o[e + "Models"] = t.models, o[e + "Model"] = t.models[0]
		}), o
	}

	function Bo(t, i) {
		var e = V(t) ? ((e = {})[t + "Index"] = 0, e) : t,
			r = N(),
			o = {},
			a = !1;
		return E(e, function(t, e) {
			var n;
			"dataIndex" === e || "dataIndexInside" === e ? o[e] = t : (n = (e = e.match(
					/^(\w+)(Index|Id|Name)$/) || [])[1], e = (e[2] || "").toLowerCase(), !n || !e ||
				i && i.includeMainTypes && C(i.includeMainTypes, n) < 0 || (a = a || !!n, (r.get(n) || r
					.set(n, {}))[e] = t))
		}), {
			mainTypeSpecified: a,
			queryOptionMap: r,
			others: o
		}
	}
	var Fo = {
		useDefault: !0,
		enableAll: !1,
		enableNone: !1
	};

	function Vo(t, e, n, i) {
		i = i || Fo;
		var r = n.index,
			o = n.id,
			n = n.name,
			a = {
				models: null,
				specified: null != r || null != o || null != n
			};
		return a.specified ? "none" === r || !1 === r ? (Tt(i.enableNone,
			'`"none"` or `false` is not a valid value on index option.'), a.models = []) : ("all" === r && (Tt(i
				.enableAll, '`"all"` is not a valid value on index option.'), r = o = n = null), a.models = t
			.queryComponents({
				mainType: e,
				index: r,
				id: o,
				name: n
			})) : (r = void 0, a.models = i.useDefault && (r = t.getComponent(e)) ? [r] : []), a
	}

	function Go(t, e, n) {
		t.setAttribute ? t.setAttribute(e, n) : t[e] = n
	}

	function Ho(t, e, n, i, r) {
		var o = null == e || "auto" === e;
		if (null == i) return i;
		if (G(i)) return io(p = bo(n || 0, i, r), o ? Math.max(oo(n || 0), oo(i)) : e);
		if (V(i)) return r < 1 ? n : i;
		for (var a = [], s = n, l = i, u = Math.max(s ? s.length : 0, l.length), h = 0; h < u; ++h) {
			var c, p, d = t.getDimensionInfo(h);
			d && "ordinal" === d.type ? a[h] = (r < 1 && s ? s : l)[h] : (p = bo(d = s && s[h] ? s[h] : 0, c = l[h],
				r), a[h] = io(p, o ? Math.max(oo(d), oo(c)) : e))
		}
		return a
	}
	var Wo = ".",
		Uo = "___EC__COMPONENT__CONTAINER___",
		Xo = "___EC__EXTENDED_CLASS___";

	function Yo(t) {
		var e = {
			main: "",
			sub: ""
		};
		return t && (t = t.split(Wo), e.main = t[0] || "", e.sub = t[1] || ""), e
	}

	function qo(t) {
		(t.$constructor = t).extend = function(t) {
			var e, n, i, r = this;

			function o() {
				return n.apply(this, arguments) || this
			}
			return D(i = r) && /^class\s/.test(Function.prototype.toString.call(i)) ? (u(o, n = r), e = o) : at(
					e = function() {
						(t.$constructor || r).apply(this, arguments)
					}, this), P(e.prototype, t), e[Xo] = !0, e.extend = this.extend, e.superCall = Ko, e
				.superApply = $o, e.superClass = r, e
		}
	}

	function Zo(t, e) {
		t.extend = e.extend
	}
	var jo = Math.round(10 * Math.random());

	function Ko(t, e) {
		for (var n = [], i = 2; i < arguments.length; i++) n[i - 2] = arguments[i];
		return this.superClass.prototype[e].apply(t, n)
	}

	function $o(t, e, n) {
		return this.superClass.prototype[e].apply(t, n)
	}

	function Qo(t) {
		var r = {};
		t.registerClass = function(t) {
			var e, n = t.type || t.prototype.type;
			return n && (Tt(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(e = n), 'componentType "' + e +
				'" illegal'), (e = Yo(t.prototype.type = n)).sub ? e.sub !== Uo && (function(t) {
				var e = r[t.main];
				e && e[Uo] || (e = r[t.main] = {
					___EC__COMPONENT__CONTAINER___: !0
				});
				return e
			}(e)[e.sub] = t) : r[e.main] = t), t
		}, t.getClass = function(t, e, n) {
			var i = r[t];
			if (i && i[Uo] && (i = e ? i[e] : null), n && !i) throw new Error(e ? "Component " + t + "." + (e ||
				"") + " is used but not imported." : t + ".type should be specified.");
			return i
		}, t.getClassesByMainType = function(t) {
			var t = Yo(t),
				n = [],
				t = r[t.main];
			return t && t[Uo] ? E(t, function(t, e) {
				e !== Uo && n.push(t)
			}) : n.push(t), n
		}, t.hasClass = function(t) {
			t = Yo(t);
			return !!r[t.main]
		}, t.getAllClassMainTypes = function() {
			var n = [];
			return E(r, function(t, e) {
				n.push(e)
			}), n
		}, t.hasSubTypes = function(t) {
			t = Yo(t), t = r[t.main];
			return t && t[Uo]
		}
	}

	function Jo(a, s) {
		for (var t = 0; t < a.length; t++) a[t][1] || (a[t][1] = a[t][0]);
		return s = s || !1,
			function(t, e, n) {
				for (var i = {}, r = 0; r < a.length; r++) {
					var o = a[r][1];
					e && 0 <= C(e, o) || n && C(n, o) < 0 || null != (o = t.getShallow(o, s)) && (i[a[r][0]] = o)
				}
				return i
			}
	}
	var ta = Jo([
			["fill", "color"],
			["shadowBlur"],
			["shadowOffsetX"],
			["shadowOffsetY"],
			["opacity"],
			["shadowColor"]
		]),
		ea = (na.prototype.getAreaStyle = function(t, e) {
			return ta(this, t, e)
		}, na);

	function na() {}
	var ia = new ni(50);

	function ra(t, e, n, i, r) {
		return t ? "string" == typeof t ? (e && e.__zrImageSrc === t || !n || (n = {
			hostEl: n,
			cb: i,
			cbPayload: r
		}, (i = ia.get(t)) ? aa(e = i.image) || i.pending.push(n) : ((e = U.loadImage(t, oa, oa))
			.__zrImageSrc = t, ia.put(t, e.__cachedImgObj = {
				image: e,
				pending: [n]
			}))), e) : t : e
	}

	function oa() {
		var t = this.__cachedImgObj;
		this.onload = this.onerror = this.__cachedImgObj = null;
		for (var e = 0; e < t.pending.length; e++) {
			var n = t.pending[e],
				i = n.cb;
			i && i(this, n.cbPayload), n.hostEl.dirty()
		}
		t.pending.length = 0
	}

	function aa(t) {
		return t && t.width && t.height
	}
	var sa = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;

	function la(t, e, n, i, r) {
		if (!e) return "";
		var o = (t + "").split("\n");
		r = ua(e, n, i, r);
		for (var a = 0, s = o.length; a < s; a++) o[a] = ha(o[a], r);
		return o.join("\n")
	}

	function ua(t, e, n, i) {
		for (var r = P({}, i = i || {}), o = (r.font = e, n = R(n, "..."), r.maxIterations = R(i.maxIterations, 2),
					r.minChar = R(i.minChar, 0)), a = (r.cnCharWidth = Mr("国", e), r.ascCharWidth = Mr("a", e)), s =
				(r.placeholder = R(i.placeholder, ""), t = Math.max(0, t - 1)), l = 0; l < o && a <= s; l++) s -= a;
		i = Mr(n, e);
		return s < i && (n = "", i = 0), s = t - i, r.ellipsis = n, r.ellipsisWidth = i, r.contentWidth = s, r
			.containerWidth = t, r
	}

	function ha(t, e) {
		var n = e.containerWidth,
			i = e.font,
			r = e.contentWidth;
		if (!n) return "";
		var o = Mr(t, i);
		if (!(o <= n)) {
			for (var a = 0;; a++) {
				if (o <= r || a >= e.maxIterations) {
					t += e.ellipsis;
					break
				}
				var s = 0 === a ? function(t, e, n, i) {
						for (var r = 0, o = 0, a = t.length; o < a && r < e; o++) {
							var s = t.charCodeAt(o);
							r += 0 <= s && s <= 127 ? n : i
						}
						return o
					}(t, r, e.ascCharWidth, e.cnCharWidth) : 0 < o ? Math.floor(t.length * r / o) : 0,
					o = Mr(t = t.substr(0, s), i)
			}
			"" === t && (t = e.placeholder)
		}
		return t
	}
	var ca = function() {},
		pa = function(t) {
			this.tokens = [], t && (this.tokens = t)
		},
		da = function() {
			this.width = 0, this.height = 0, this.contentWidth = 0, this.contentHeight = 0, this.outerWidth = 0,
				this.outerHeight = 0, this.lines = []
		};

	function fa(t, e) {
		var n = new da;
		if (null != t && (t += ""), t) {
			for (var i, r = e.width, o = e.height, a = e.overflow, s = "break" !== a && "breakAll" !== a || null ==
					r ? null : {
						width: r,
						accumWidth: 0,
						breakAll: "breakAll" === a
					}, l = sa.lastIndex = 0; null != (i = sa.exec(t));) {
				var u = i.index;
				l < u && ga(n, t.substring(l, u), e, s), ga(n, i[2], e, s, i[1]), l = sa.lastIndex
			}
			l < t.length && ga(n, t.substring(l, t.length), e, s);
			var h, c = [],
				p = 0,
				d = 0,
				f = e.padding,
				g = "truncate" === a,
				y = "truncate" === e.lineOverflow;
			t: for (var m = 0; m < n.lines.length; m++) {
				for (var v = n.lines[m], _ = 0, x = 0, b = 0; b < v.tokens.length; b++) {
					var w = (k = v.tokens[b]).styleName && e.rich[k.styleName] || {},
						S = k.textPadding = w.padding,
						M = S ? S[1] + S[3] : 0,
						T = k.font = w.font || e.font,
						I = (k.contentHeight = kr(T), R(w.height, k.contentHeight));
					if (k.innerHeight = I, S && (I += S[0] + S[2]), k.height = I, k.lineHeight = wt(w
							.lineHeight, e.lineHeight, I), k.align = w && w.align || e.align, k.verticalAlign =
						w && w.verticalAlign || "middle", y && null != o && p + k.lineHeight > o) {
						0 < b ? (v.tokens = v.tokens.slice(0, b), L(v, x, _), n.lines = n.lines.slice(0, m +
							1)) : n.lines = n.lines.slice(0, m);
						break t
					}
					var C, S = w.width,
						D = null == S || "auto" === S;
					"string" == typeof S && "%" === S.charAt(S.length - 1) ? (k.percentWidth = S, c.push(k), k
							.contentWidth = Mr(k.text, T)) : (D && (S = (S = w.backgroundColor) && S.image) && (
								C = void 0, aa(S = "string" == typeof(h = S) ? (C = ia.get(h)) && C.image : h)
								) && (k.width = Math.max(k.width, S.width * I / S.height)), null != (C = g &&
								null != r ? r - x : null) && C < k.width ? !D || C < M ? (k.text = "", k.width =
								k.contentWidth = 0) : (k.text = la(k.text, C - M, T, e.ellipsis, {
								minChar: e.truncateMinChar
							}), k.width = k.contentWidth = Mr(k.text, T)) : k.contentWidth = Mr(k.text, T)), k
						.width += M, x += k.width, w && (_ = Math.max(_, k.lineHeight))
				}
				L(v, x, _)
			}
			n.outerWidth = n.width = R(r, d), n.outerHeight = n.height = R(o, p), n.contentHeight = p, n
				.contentWidth = d, f && (n.outerWidth += f[1] + f[3], n.outerHeight += f[0] + f[2]);
			for (m = 0; m < c.length; m++) {
				var k, A = (k = c[m]).percentWidth;
				k.width = parseInt(A, 10) / 100 * n.width
			}
		}
		return n;

		function L(t, e, n) {
			t.width = e, t.lineHeight = n, p += n, d = Math.max(d, e)
		}
	}

	function ga(t, e, n, i, r) {
		var o, a, s = "" === e,
			l = r && n.rich[r] || {},
			u = t.lines,
			h = l.font || n.font,
			c = !1;
		i ? (n = (t = l.padding) ? t[1] + t[3] : 0, null != l.width && "auto" !== l.width ? (t = Ar(l.width, i
				.width) + n, 0 < u.length && t + i.accumWidth > i.width && (o = e.split("\n"), c = !0), i
			.accumWidth = t) : (t = ma(e, h, i.width, i.breakAll, i.accumWidth), i.accumWidth = t
			.accumWidth + n, a = t.linesWidths, o = t.lines)) : o = e.split("\n");
		for (var p = 0; p < o.length; p++) {
			var d, f, g = o[p],
				y = new ca;
			y.styleName = r, y.text = g, y.isLineHolder = !g && !s, "number" == typeof l.width ? y.width = l.width :
				y.width = a ? a[p] : Mr(g, h), p || c ? u.push(new pa([y])) : 1 === (f = (d = (u[u.length - 1] || (
					u[0] = new pa)).tokens).length) && d[0].isLineHolder ? d[0] = y : !g && f && !s || d.push(y)
		}
	}
	var ya = ut(",&?/;] ".split(""), function(t, e) {
		return t[e] = !0, t
	}, {});

	function ma(t, e, n, i, r) {
		for (var o, a = [], s = [], l = "", u = "", h = 0, c = 0, p = 0; p < t.length; p++) {
			var d, f, g = t.charAt(p);
			"\n" === g ? (u && (l += u, c += h), a.push(l), s.push(c), u = l = "", c = h = 0) : (d = Mr(g, e), f = !
				(i || (f = void 0, !(32 <= (f = (f = o = g).charCodeAt(0)) && f <= 591 || 880 <= f && f <=
					4351 || 4608 <= f && f <= 5119 || 7680 <= f && f <= 8303)) || !!ya[o]), (a.length ? n < c +
					d : n < r + c + d) ? c ? (l || u) && (c = f ? (l || (l = u, u = "", c = h = 0), a.push(l), s
					.push(c - h), u += g, l = "", h += d) : (u && (l += u, u = "", h = 0), a.push(l), s
					.push(c), l = g, d)) : f ? (a.push(u), s.push(h), u = g, h = d) : (a.push(g), s.push(d)) : (
					c += d, f ? (u += g, h += d) : (u && (l += u, u = "", h = 0), l += g)))
		}
		return a.length || l || (l = t, u = "", h = 0), u && (l += u), l && (a.push(l), s.push(c)), 1 === a
			.length && (c += r), {
				accumWidth: c,
				lines: a,
				linesWidths: s
			}
	}
	var va, _a = "__zr_style_" + Math.round(10 * Math.random()),
		xa = {
			shadowBlur: 0,
			shadowOffsetX: 0,
			shadowOffsetY: 0,
			shadowColor: "#000",
			opacity: 1,
			blend: "source-over"
		},
		ba = {
			style: {
				shadowBlur: !0,
				shadowOffsetX: !0,
				shadowOffsetY: !0,
				shadowColor: !0,
				opacity: !0
			}
		},
		wa = (xa[_a] = !0, ["z", "z2", "invisible"]),
		Sa = ["invisible"],
		e = (u(i, va = e), i.prototype._init = function(t) {
				for (var e = ct(t), n = 0; n < e.length; n++) {
					var i = e[n];
					"style" === i ? this.useStyle(t[i]) : va.prototype.attrKV.call(this, i, t[i])
				}
				this.style || this.useStyle({})
			}, i.prototype.beforeBrush = function() {}, i.prototype.afterBrush = function() {}, i.prototype
			.innerBeforeBrush = function() {}, i.prototype.innerAfterBrush = function() {}, i.prototype
			.shouldBePainted = function(t, e, n, i) {
				var r = this.transform;
				if (this.ignore || this.invisible || 0 === this.style.opacity || this.culling && function(t, e, n) {
						Ma.copy(t.getBoundingRect()), t.transform && Ma.applyTransform(t.transform);
						return Ta.width = e, Ta.height = n, !Ma.intersect(Ta)
					}(this, t, e) || r && !r[0] && !r[3]) return !1;
				if (n && this.__clipPaths)
					for (var o = 0; o < this.__clipPaths.length; ++o)
						if (this.__clipPaths[o].isZeroArea()) return !1;
				if (i && this.parent)
					for (var a = this.parent; a;) {
						if (a.ignore) return !1;
						a = a.parent
					}
				return !0
			}, i.prototype.contain = function(t, e) {
				return this.rectContain(t, e)
			}, i.prototype.traverse = function(t, e) {
				t.call(e, this)
			}, i.prototype.rectContain = function(t, e) {
				t = this.transformCoordToLocal(t, e);
				return this.getBoundingRect().contain(t[0], t[1])
			}, i.prototype.getPaintRect = function() {
				var t, e, n, i, r, o = this._paintRect;
				return this._paintRect && !this.__dirty || (r = this.transform, t = this.getBoundingRect(), e = (i =
						this.style).shadowBlur || 0, n = i.shadowOffsetX || 0, i = i.shadowOffsetY || 0, o =
					this._paintRect || (this._paintRect = new X(0, 0, 0, 0)), r ? X.applyTransform(o, t, r) : o
					.copy(t), (e || n || i) && (o.width += 2 * e + Math.abs(n), o.height += 2 * e + Math.abs(i),
						o.x = Math.min(o.x, o.x + n - e), o.y = Math.min(o.y, o.y + i - e)), r = this
					.dirtyRectTolerance, o.isZero()) || (o.x = Math.floor(o.x - r), o.y = Math.floor(o.y - r), o
					.width = Math.ceil(o.width + 1 + 2 * r), o.height = Math.ceil(o.height + 1 + 2 * r)), o
			}, i.prototype.setPrevPaintRect = function(t) {
				t ? (this._prevPaintRect = this._prevPaintRect || new X(0, 0, 0, 0), this._prevPaintRect.copy(t)) :
					this._prevPaintRect = null
			}, i.prototype.getPrevPaintRect = function() {
				return this._prevPaintRect
			}, i.prototype.animateStyle = function(t) {
				return this.animate("style", t)
			}, i.prototype.updateDuringAnimation = function(t) {
				"style" === t ? this.dirtyStyle() : this.markRedraw()
			}, i.prototype.attrKV = function(t, e) {
				"style" !== t ? va.prototype.attrKV.call(this, t, e) : this.style ? this.setStyle(e) : this
					.useStyle(e)
			}, i.prototype.setStyle = function(t, e) {
				return "string" == typeof t ? this.style[t] = e : P(this.style, t), this.dirtyStyle(), this
			}, i.prototype.dirtyStyle = function(t) {
				t || this.markRedraw(), this.__dirty |= 2, this._rect && (this._rect = null)
			}, i.prototype.dirty = function() {
				this.dirtyStyle()
			}, i.prototype.styleChanged = function() {
				return !!(2 & this.__dirty)
			}, i.prototype.styleUpdated = function() {
				this.__dirty &= -3
			}, i.prototype.createStyle = function(t) {
				return Et(xa, t)
			}, i.prototype.useStyle = function(t) {
				t[_a] || (t = this.createStyle(t)), this.__inHover ? this.__hoverStyle = t : this.style = t, this
					.dirtyStyle()
			}, i.prototype.isStyleObject = function(t) {
				return t[_a]
			}, i.prototype._innerSaveToNormal = function(t) {
				va.prototype._innerSaveToNormal.call(this, t);
				var e = this._normalState;
				t.style && !e.style && (e.style = this._mergeStyle(this.createStyle(), this.style)), this
					._savePrimaryToNormal(t, e, wa)
			}, i.prototype._applyStateObj = function(t, e, n, i, r, o) {
				va.prototype._applyStateObj.call(this, t, e, n, i, r, o);
				var a, s = !(e && i);
				if (e && e.style ? r ? i ? a = e.style : (a = this._mergeStyle(this.createStyle(), n.style), this
						._mergeStyle(a, e.style)) : (a = this._mergeStyle(this.createStyle(), (i ? this : n).style),
						this._mergeStyle(a, e.style)) : s && (a = n.style), a)
					if (r) {
						var l = this.style;
						if (this.style = this.createStyle(s ? {} : l), s)
							for (var u = ct(l), h = 0; h < u.length; h++)(p = u[h]) in a && (a[p] = a[p], this
								.style[p] = l[p]);
						for (var c = ct(a), h = 0; h < c.length; h++) {
							var p = c[h];
							this.style[p] = this.style[p]
						}
						this._transitionState(t, {
							style: a
						}, o, this.getAnimationStyleProps())
					} else this.useStyle(a);
				for (var d = this.__inHover ? Sa : wa, h = 0; h < d.length; h++) {
					p = d[h];
					e && null != e[p] ? this[p] = e[p] : s && null != n[p] && (this[p] = n[p])
				}
			}, i.prototype._mergeStates = function(t) {
				for (var e, n = va.prototype._mergeStates.call(this, t), i = 0; i < t.length; i++) {
					var r = t[i];
					r.style && this._mergeStyle(e = e || {}, r.style)
				}
				return e && (n.style = e), n
			}, i.prototype._mergeStyle = function(t, e) {
				return P(t, e), t
			}, i.prototype.getAnimationStyleProps = function() {
				return ba
			}, i.initDefaultProps = ((e = i.prototype).type = "displayable", e.invisible = !1, e.z = 0, e.z2 = 0, e
				.zlevel = 0, e.culling = !1, e.cursor = "pointer", e.rectHover = !1, e.incremental = !1, e._rect =
				null, e.dirtyRectTolerance = 0, void(e.__dirty = 2 | _n)), i);

	function i(t) {
		return va.call(this, t) || this
	}
	var Ma = new X(0, 0, 0, 0),
		Ta = new X(0, 0, 0, 0);
	var Ia = Math.min,
		Ca = Math.max,
		Da = Math.sin,
		ka = Math.cos,
		Aa = 2 * Math.PI,
		La = Ht(),
		Pa = Ht(),
		Oa = Ht();

	function Ra(t, e, n, i, r, o) {
		r[0] = Ia(t, n), r[1] = Ia(e, i), o[0] = Ca(t, n), o[1] = Ca(e, i)
	}
	var Na = [],
		Ea = [];
	var za = {
			M: 1,
			L: 2,
			C: 3,
			Q: 4,
			A: 5,
			Z: 6,
			R: 7
		},
		Ba = [],
		Fa = [],
		Va = [],
		Ga = [],
		Ha = [],
		Wa = [],
		Ua = Math.min,
		Xa = Math.max,
		Ya = Math.cos,
		qa = Math.sin,
		Za = Math.abs,
		ja = Math.PI,
		Ka = 2 * ja,
		$a = "undefined" != typeof Float32Array,
		Qa = [];

	function Ja(t) {
		return Math.round(t / ja * 1e8) / 1e8 % 2 * ja
	}

	function ts(t, e) {
		var n = Ja(t[0]),
			i = (n < 0 && (n += Ka), n - t[0]),
			r = t[1];
		r += i, !e && Ka <= r - n ? r = n + Ka : e && Ka <= n - r ? r = n - Ka : !e && r < n ? r = n + (Ka - Ja(n -
			r)) : e && n < r && (r = n - (Ka - Ja(r - n))), t[0] = n, t[1] = r
	}
	r.prototype.increaseVersion = function() {
		this._version++
	}, r.prototype.getVersion = function() {
		return this._version
	}, r.prototype.setScale = function(t, e, n) {
		0 < (n = n || 0) && (this._ux = Za(n / cr / t) || 0, this._uy = Za(n / cr / e) || 0)
	}, r.prototype.setDPR = function(t) {
		this.dpr = t
	}, r.prototype.setContext = function(t) {
		this._ctx = t
	}, r.prototype.getContext = function() {
		return this._ctx
	}, r.prototype.beginPath = function() {
		return this._ctx && this._ctx.beginPath(), this.reset(), this
	}, r.prototype.reset = function() {
		this._saveData && (this._len = 0), this._pathSegLen && (this._pathSegLen = null, this._pathLen = 0),
			this._version++
	}, r.prototype.moveTo = function(t, e) {
		return this._drawPendingPt(), this.addData(za.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 =
			t, this._y0 = e, this._xi = t, this._yi = e, this
	}, r.prototype.lineTo = function(t, e) {
		var n = Za(t - this._xi),
			i = Za(e - this._yi),
			r = n > this._ux || i > this._uy;
		return this.addData(za.L, t, e), this._ctx && r && this._ctx.lineTo(t, e), r ? (this._xi = t, this._yi =
			e, this._pendingPtDist = 0) : (r = n * n + i * i) > this._pendingPtDist && (this._pendingPtX =
			t, this._pendingPtY = e, this._pendingPtDist = r), this
	}, r.prototype.bezierCurveTo = function(t, e, n, i, r, o) {
		return this._drawPendingPt(), this.addData(za.C, t, e, n, i, r, o), this._ctx && this._ctx
			.bezierCurveTo(t, e, n, i, r, o), this._xi = r, this._yi = o, this
	}, r.prototype.quadraticCurveTo = function(t, e, n, i) {
		return this._drawPendingPt(), this.addData(za.Q, t, e, n, i), this._ctx && this._ctx.quadraticCurveTo(t,
			e, n, i), this._xi = n, this._yi = i, this
	}, r.prototype.arc = function(t, e, n, i, r, o) {
		return this._drawPendingPt(), Qa[0] = i, Qa[1] = r, ts(Qa, o), this.addData(za.A, t, e, n, n, i = Qa[0],
				(r = Qa[1]) - i, 0, o ? 0 : 1), this._ctx && this._ctx.arc(t, e, n, i, r, o), this._xi = Ya(r) *
			n + t, this._yi = qa(r) * n + e, this
	}, r.prototype.arcTo = function(t, e, n, i, r) {
		return this._drawPendingPt(), this._ctx && this._ctx.arcTo(t, e, n, i, r), this
	}, r.prototype.rect = function(t, e, n, i) {
		return this._drawPendingPt(), this._ctx && this._ctx.rect(t, e, n, i), this.addData(za.R, t, e, n, i),
			this
	}, r.prototype.closePath = function() {
		this._drawPendingPt(), this.addData(za.Z);
		var t = this._ctx,
			e = this._x0,
			n = this._y0;
		return t && t.closePath(), this._xi = e, this._yi = n, this
	}, r.prototype.fill = function(t) {
		t && t.fill(), this.toStatic()
	}, r.prototype.stroke = function(t) {
		t && t.stroke(), this.toStatic()
	}, r.prototype.len = function() {
		return this._len
	}, r.prototype.setData = function(t) {
		var e = t.length;
		this.data && this.data.length === e || !$a || (this.data = new Float32Array(e));
		for (var n = 0; n < e; n++) this.data[n] = t[n];
		this._len = e
	}, r.prototype.appendPath = function(t) {
		for (var e = (t = t instanceof Array ? t : [t]).length, n = 0, i = this._len, r = 0; r < e; r++) n += t[
			r].len();
		$a && this.data instanceof Float32Array && (this.data = new Float32Array(i + n));
		for (r = 0; r < e; r++)
			for (var o = t[r].data, a = 0; a < o.length; a++) this.data[i++] = o[a];
		this._len = i
	}, r.prototype.addData = function(t, e, n, i, r, o, a, s, l) {
		if (this._saveData) {
			var u = this.data;
			this._len + arguments.length > u.length && (this._expandData(), u = this.data);
			for (var h = 0; h < arguments.length; h++) u[this._len++] = arguments[h]
		}
	}, r.prototype._drawPendingPt = function() {
		0 < this._pendingPtDist && (this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY), this
			._pendingPtDist = 0)
	}, r.prototype._expandData = function() {
		if (!(this.data instanceof Array)) {
			for (var t = [], e = 0; e < this._len; e++) t[e] = this.data[e];
			this.data = t
		}
	}, r.prototype.toStatic = function() {
		var t;
		this._saveData && (this._drawPendingPt(), (t = this.data) instanceof Array) && (t.length = this._len,
			$a) && 11 < this._len && (this.data = new Float32Array(t))
	}, r.prototype.getBoundingRect = function() {
		Va[0] = Va[1] = Ha[0] = Ha[1] = Number.MAX_VALUE, Ga[0] = Ga[1] = Wa[0] = Wa[1] = -Number.MAX_VALUE;
		for (var t, e = this.data, n = 0, i = 0, r = 0, o = 0, a = 0; a < this._len;) {
			var E = e[a++],
				z = 1 === a;
			switch (z && (r = n = e[a], o = i = e[a + 1]), E) {
				case za.M:
					n = r = e[a++], i = o = e[a++], Ha[0] = r, Ha[1] = o, Wa[0] = r, Wa[1] = o;
					break;
				case za.L:
					Ra(n, i, e[a], e[a + 1], Ha, Wa), n = e[a++], i = e[a++];
					break;
				case za.C:
					H = G = m = y = V = g = f = d = p = c = F = B = h = u = l = s = void 0;
					var s = n,
						l = i,
						u = e[a++],
						h = e[a++],
						B = e[a++],
						F = e[a++],
						c = e[a],
						p = e[a + 1],
						d = Ha,
						f = Wa,
						g = Gn,
						V = Bn,
						y = g(s, u, B, c, Na);
					d[0] = 1 / 0, d[1] = 1 / 0, f[0] = -1 / 0, f[1] = -1 / 0;
					for (var m = 0; m < y; m++) {
						var G = V(s, u, B, c, Na[m]);
						d[0] = Ia(G, d[0]), f[0] = Ca(G, f[0])
					}
					for (y = g(l, h, F, p, Ea), m = 0; m < y; m++) {
						var H = V(l, h, F, p, Ea[m]);
						d[1] = Ia(H, d[1]), f[1] = Ca(H, f[1])
					}
					d[0] = Ia(s, d[0]), f[0] = Ca(s, f[0]), d[0] = Ia(c, d[0]), f[0] = Ca(c, f[0]), d[1] = Ia(l,
							d[1]), f[1] = Ca(l, f[1]), d[1] = Ia(p, d[1]), f[1] = Ca(p, f[1]), n = e[a++], i =
						e[a++];
					break;
				case za.Q:
					g = n, P = i, M = e[a++], x = e[a++], S = e[a], v = e[a + 1], w = Ha, T = Wa, t = b = t =
						_ = void 0, _ = Un, t = Ca(Ia((b = Yn)(g, M, S), 1), 0), b = Ca(Ia(b(P, x, v), 1), 0),
						M = _(g, M, S, t), t = _(P, x, v, b), w[0] = Ia(g, S, M), w[1] = Ia(P, v, t), T[0] = Ca(
							g, S, M), T[1] = Ca(P, v, t), n = e[a++], i = e[a++];
					break;
				case za.A:
					var v, _ = e[a++],
						x = e[a++],
						b = e[a++],
						w = e[a++],
						S = e[a++],
						M = e[a++] + S,
						T = (a += 1, !e[a++]),
						I = (z && (r = Ya(S) * b + _, o = qa(S) * w + x), N = v = U = W = R = O = P = L = A =
							k = D = C = I = void 0, _),
						C = x,
						D = b,
						k = w,
						A = S,
						L = M,
						P = T,
						O = Ha,
						R = Wa,
						W = ne,
						U = ie;
					if ((v = Math.abs(A - L)) % Aa < 1e-4 && 1e-4 < v) O[0] = I - D, O[1] = C - k, R[0] = I + D,
						R[1] = C + k;
					else {
						La[0] = ka(A) * D + I, La[1] = Da(A) * k + C, Pa[0] = ka(L) * D + I, Pa[1] = Da(L) * k +
							C, W(O, La, Pa), U(R, La, Pa), (A %= Aa) < 0 && (A += Aa), (L %= Aa) < 0 && (L +=
								Aa), L < A && !P ? L += Aa : A < L && P && (A += Aa), P && (v = L, L = A, A =
							v);
						for (var N = 0; N < L; N += Math.PI / 2) A < N && (Oa[0] = ka(N) * D + I, Oa[1] = Da(
							N) * k + C, W(O, Oa, O), U(R, Oa, R))
					}
					n = Ya(M) * b + _, i = qa(M) * w + x;
					break;
				case za.R:
					Ra(r = n = e[a++], o = i = e[a++], r + e[a++], o + e[a++], Ha, Wa);
					break;
				case za.Z:
					n = r, i = o
			}
			ne(Va, Va, Ha), ie(Ga, Ga, Wa)
		}
		return 0 === a && (Va[0] = Va[1] = Ga[0] = Ga[1] = 0), new X(Va[0], Va[1], Ga[0] - Va[0], Ga[1] - Va[1])
	}, r.prototype._calculateLength = function() {
		for (var t = this.data, e = this._len, n = this._ux, i = this._uy, r = 0, o = 0, a = 0, s = 0, l = (this
				._pathSegLen || (this._pathSegLen = []), this._pathSegLen), u = 0, h = 0, c = 0; c < e;) {
			var p = t[c++],
				d = 1 === c,
				f = (d && (a = r = t[c], s = o = t[c + 1]), -1);
			switch (p) {
				case za.M:
					r = a = t[c++], o = s = t[c++];
					break;
				case za.L:
					var g = t[c++],
						y = (_ = t[c++]) - o;
					(Za(C = g - r) > n || Za(y) > i || c === e - 1) && (f = Math.sqrt(C * C + y * y), r = g, o =
						_);
					break;
				case za.C:
					var m = t[c++],
						v = t[c++],
						g = t[c++],
						_ = t[c++],
						x = t[c++],
						b = t[c++],
						f = function(t, e, n, i, r, o, a, s, l) {
							for (var u = t, h = e, c = 0, p = 1 / l, d = 1; d <= l; d++) {
								var f = d * p,
									g = Bn(t, n, r, a, f),
									f = Bn(e, i, o, s, f),
									y = g - u,
									m = f - h;
								c += Math.sqrt(y * y + m * m), u = g, h = f
							}
							return c
						}(r, o, m, v, g, _, x, b, 10),
						r = x,
						o = b;
					break;
				case za.Q:
					f = function(t, e, n, i, r, o, a) {
						for (var s = t, l = e, u = 0, h = 1 / a, c = 1; c <= a; c++) {
							var p = c * h,
								d = Un(t, n, r, p),
								p = Un(e, i, o, p),
								f = d - s,
								g = p - l;
							u += Math.sqrt(f * f + g * g), s = d, l = p
						}
						return u
					}(r, o, m = t[c++], v = t[c++], g = t[c++], _ = t[c++], 10), r = g, o = _;
					break;
				case za.A:
					var x = t[c++],
						b = t[c++],
						w = t[c++],
						S = t[c++],
						M = t[c++],
						T = t[c++],
						I = T + M;
					c += 1, d && (a = Ya(M) * w + x, s = qa(M) * S + b), f = Xa(w, S) * Ua(Ka, Math.abs(T)), r =
						Ya(I) * w + x, o = qa(I) * S + b;
					break;
				case za.R:
					a = r = t[c++], s = o = t[c++];
					f = 2 * t[c++] + 2 * t[c++];
					break;
				case za.Z:
					var C = a - r,
						y = s - o;
					f = Math.sqrt(C * C + y * y), r = a, o = s
			}
			0 <= f && (u += l[h++] = f)
		}
		return this._pathLen = u
	}, r.prototype.rebuildPath = function(t, e) {
		var n, i, r, o, a, s, l, u, h = this.data,
			E = this._ux,
			z = this._uy,
			B = this._len,
			c = e < 1,
			p = 0,
			d = 0,
			f = 0;
		if (!c || (this._pathSegLen || this._calculateLength(), a = this._pathSegLen, s = e * this._pathLen)) t:
			for (var g = 0; g < B;) {
				var y = h[g++],
					F = 1 === g;
				switch (F && (n = r = h[g], i = o = h[g + 1]), y !== za.L && 0 < f && (t.lineTo(l, u), f = 0),
					y) {
					case za.M:
						n = r = h[g++], i = o = h[g++], t.moveTo(r, o);
						break;
					case za.L:
						var m = h[g++],
							v = h[g++],
							_ = Za(m - r),
							x = Za(v - o);
						if (E < _ || z < x) {
							if (c) {
								if (s < p + (N = a[d++])) {
									var b = (s - p) / N;
									t.lineTo(r * (1 - b) + m * b, o * (1 - b) + v * b);
									break t
								}
								p += N
							}
							t.lineTo(m, v), r = m, o = v, f = 0
						} else {
							_ = _ * _ + x * x;
							f < _ && (l = m, u = v, f = _)
						}
						break;
					case za.C:
						var w = h[g++],
							S = h[g++],
							M = h[g++],
							T = h[g++],
							x = h[g++],
							_ = h[g++];
						if (c) {
							if (s < p + (N = a[d++])) {
								Hn(r, w, M, x, b = (s - p) / N, Ba), Hn(o, S, T, _, b, Fa), t.bezierCurveTo(Ba[
									1], Fa[1], Ba[2], Fa[2], Ba[3], Fa[3]);
								break t
							}
							p += N
						}
						t.bezierCurveTo(w, S, M, T, x, _), r = x, o = _;
						break;
					case za.Q:
						w = h[g++], S = h[g++], M = h[g++], T = h[g++];
						if (c) {
							if (s < p + (N = a[d++])) {
								qn(r, w, M, b = (s - p) / N, Ba), qn(o, S, T, b, Fa), t.quadraticCurveTo(Ba[1],
									Fa[1], Ba[2], Fa[2]);
								break t
							}
							p += N
						}
						t.quadraticCurveTo(w, S, M, T), r = M, o = T;
						break;
					case za.A:
						var I = h[g++],
							C = h[g++],
							D = h[g++],
							k = h[g++],
							A = h[g++],
							L = h[g++],
							P = h[g++],
							V = !h[g++],
							G = k < D ? D : k,
							O = .001 < Za(D - k),
							R = A + L,
							H = !1;
						if (c && (s < p + (N = a[d++]) && (R = A + L * (s - p) / N, H = !0), p += N), O && t
							.ellipse ? t.ellipse(I, C, D, k, P, A, R, V) : t.arc(I, C, G, A, R, V), H) break t;
						F && (n = Ya(A) * D + I, i = qa(A) * k + C), r = Ya(R) * D + I, o = qa(R) * k + C;
						break;
					case za.R:
						n = r = h[g], i = o = h[g + 1], m = h[g++], v = h[g++];
						var N, L = h[g++],
							O = h[g++];
						if (c) {
							if (s < p + (N = a[d++])) {
								P = s - p;
								t.moveTo(m, v), t.lineTo(m + Ua(P, L), v), 0 < (P -= L) && t.lineTo(m + L, v +
									Ua(P, O)), 0 < (P -= O) && t.lineTo(m + Xa(L - P, 0), v + O), 0 < (P -=
									L) && t.lineTo(m, v + Xa(O - P, 0));
								break t
							}
							p += N
						}
						t.rect(m, v, L, O);
						break;
					case za.Z:
						if (c) {
							if (s < p + (N = a[d++])) {
								b = (s - p) / N;
								t.lineTo(r * (1 - b) + n * b, o * (1 - b) + i * b);
								break t
							}
							p += N
						}
						t.closePath(), r = n, o = i
				}
			}
	}, r.prototype.clone = function() {
		var t = new r,
			e = this.data;
		return t.data = e.slice ? e.slice() : Array.prototype.slice.call(e), t._len = this._len, t
	}, r.CMD = za, r.initDefaultProps = ((yu = r.prototype)._saveData = !0, yu._ux = 0, yu._uy = 0, yu
		._pendingPtDist = 0, void(yu._version = 0));
	var es = r;

	function r(t) {
		this.dpr = 1, this._xi = 0, this._yi = 0, this._x0 = 0, this._y0 = 0, this._len = 0, t && (this
			._saveData = !1), this._saveData && (this.data = [])
	}

	function ns(t, e, n, i, r, o, a) {
		var s;
		if (0 !== r) return s = 0, !(e + (r = r) < a && i + r < a || a < e - r && a < i - r || t + r < o && n + r <
			o || o < t - r && o < n - r) && (t === n ? Math.abs(o - t) <= r / 2 : (o = (s = (e - i) / (t -
			n)) * o - a + (t * i - n * e) / (t - n)) * o / (s * s + 1) <= r / 2 * r / 2)
	}
	var is = 2 * Math.PI;

	function rs(t) {
		return (t %= is) < 0 && (t += is), t
	}
	var os = 2 * Math.PI;

	function as(t, e, n, i, r, o) {
		return e < o && i < o || o < e && o < i || i === e ? 0 : (n = (o = (o - e) / (i - e)) * (n - t) + t) === r ?
			1 / 0 : r < n ? 1 != o && 0 != o ? i < e ? 1 : -1 : i < e ? .5 : -.5 : 0
	}
	var ss = es.CMD,
		ls = 2 * Math.PI,
		us = 1e-4;
	var hs = [-1, -1, -1],
		cs = [-1, -1];

	function ps(t, e, n, i, r, o, a, s, l, u) {
		if (e < u && i < u && o < u && s < u || u < e && u < i && u < o && u < s) return 0;
		var h = Vn(e, i, o, s, u, hs);
		if (0 === h) return 0;
		for (var c, p = 0, d = -1, f = void 0, g = void 0, y = 0; y < h; y++) {
			var m = hs[y],
				v = 0 === m || 1 === m ? .5 : 1;
			Bn(t, n, r, a, m) < l || (d < 0 && (d = Gn(e, i, o, s, cs), cs[1] < cs[0] && 1 < d && (c = void 0, c =
					cs[0], cs[0] = cs[1], cs[1] = c), f = Bn(e, i, o, s, cs[0]), 1 < d) && (g = Bn(e, i, o, s,
					cs[1])), 2 === d ? m < cs[0] ? p += f < e ? v : -v : m < cs[1] ? p += g < f ? v : -v : p +=
				s < g ? v : -v : m < cs[0] ? p += f < e ? v : -v : p += s < f ? v : -v)
		}
		return p
	}

	function ds(t, e, n, i, r, o, a, s) {
		if (e < s && i < s && o < s || s < e && s < i && s < o) return 0;
		c = hs, h = (l = e) - 2 * (u = i) + (h = o), u = 2 * (u - l), l -= s = s, s = 0, En(h) ? zn(u) && 0 <= (
				p = -l / u) && p <= 1 && (c[s++] = p) : En(l = u * u - 4 * h * l) ? 0 <= (p = -u / (2 * h)) && p <=
			1 && (c[s++] = p) : 0 < l && (d = (-u - (l = kn(l))) / (2 * h), 0 <= (p = (-u + l) / (2 * h)) && p <=
				1 && (c[s++] = p), 0 <= d) && d <= 1 && (c[s++] = d);
		var l, u, h, c, p, d, f = s;
		if (0 === f) return 0;
		var g = Yn(e, i, o);
		if (0 <= g && g <= 1) {
			for (var y = 0, m = Un(e, i, o, g), v = 0; v < f; v++) {
				var _ = 0 === hs[v] || 1 === hs[v] ? .5 : 1;
				Un(t, n, r, hs[v]) < a || (hs[v] < g ? y += m < e ? _ : -_ : y += o < m ? _ : -_)
			}
			return y
		}
		return _ = 0 === hs[0] || 1 === hs[0] ? .5 : 1, Un(t, n, r, hs[0]) < a ? 0 : o < e ? _ : -_
	}

	function fs(t, e, n, i, r) {
		for (var o, a = t.data, s = t.len(), l = 0, u = 0, h = 0, c = 0, p = 0, d = 0; d < s;) {
			var f = a[d++],
				g = 1 === d;
			switch (f === ss.M && 1 < d && (n || (l += as(u, h, c, p, i, r))), g && (c = u = a[d], p = h = a[d +
				1]), f) {
				case ss.M:
					u = c = a[d++], h = p = a[d++];
					break;
				case ss.L:
					if (n) {
						if (ns(u, h, a[d], a[d + 1], e, i, r)) return !0
					} else l += as(u, h, a[d], a[d + 1], i, r) || 0;
					u = a[d++], h = a[d++];
					break;
				case ss.C:
					if (n) {
						if (function(t, e, n, i, r, o, a, s, l, u, h) {
								if (0 !== l) return !(e + (l = l) < h && i + l < h && o + l < h && s + l < h || h <
									e - l && h < i - l && h < o - l && h < s - l || t + l < u && n + l <
									u && r + l < u && a + l < u || u < t - l && u < n - l && u < r - l &&
									u < a - l) && Wn(t, e, n, i, r, o, a, s, u, h, null) <= l / 2
							}(u, h, a[d++], a[d++], a[d++], a[d++], a[d], a[d + 1], e, i, r)) return !0
					} else l += ps(u, h, a[d++], a[d++], a[d++], a[d++], a[d], a[d + 1], i, r) || 0;
					u = a[d++], h = a[d++];
					break;
				case ss.Q:
					if (n) {
						if (function(t, e, n, i, r, o, a, s, l) {
								if (0 !== a) return !(e + (a = a) < l && i + a < l && o + a < l || l < e - a && l <
										i - a && l < o - a || t + a < s && n + a < s && r + a < s || s < t -
										a && s < n - a && s < r - a) && Zn(t, e, n, i, r, o, s, l, null) <= a /
									2
							}(u, h, a[d++], a[d++], a[d], a[d + 1], e, i, r)) return !0
					} else l += ds(u, h, a[d++], a[d++], a[d], a[d + 1], i, r) || 0;
					u = a[d++], h = a[d++];
					break;
				case ss.A:
					var y = a[d++],
						m = a[d++],
						v = a[d++],
						_ = a[d++],
						x = a[d++],
						b = a[d++],
						w = (d += 1, !!(1 - a[d++])),
						S = Math.cos(x) * v + y,
						M = Math.sin(x) * _ + m,
						T = (g ? (c = S, p = M) : l += as(u, h, S, M, i, r), (i - y) * _ / v + y);
					if (n) {
						if (function(t, e, n, i, r, o, a, s, l) {
								if (0 !== a) return a = a, s -= t, l -= e, !(n < (t = Math.sqrt(s * s + l * l)) -
									a || t + a < n) && (Math.abs(i - r) % os < 1e-4 || ((r = o ? (e = i, i =
										rs(r), rs(e)) : (i = rs(i), rs(r))) < i && (r += os), (t = Math
										.atan2(l, s)) < 0 && (t += os), i <= t && t <= r) || i <= t + os &&
									t + os <= r)
							}(y, m, _, x, x + b, w, e, T, r)) return !0
					} else l += function(t, e, n, i, r, o, a, s) {
						if (n < (s -= e) || s < -n) return 0;
						var e = Math.sqrt(n * n - s * s);
						if (hs[0] = -e, hs[1] = e, (n = Math.abs(i - r)) < 1e-4) return 0;
						if (ls - 1e-4 <= n) return r = ls, h = o ? 1 : -1, a >= hs[i = 0] + t && a <= hs[1] +
							t ? h : 0;
						r < i && (e = i, i = r, r = e), i < 0 && (i += ls, r += ls);
						for (var l = 0, u = 0; u < 2; u++) {
							var h, c = hs[u];
							a < c + t && (h = o ? 1 : -1, i <= (c = (c = Math.atan2(s, c)) < 0 ? ls + c : c) &&
								c <= r || i <= c + ls && c + ls <= r) && (l += h = c > Math.PI / 2 && c <
								1.5 * Math.PI ? -h : h)
						}
						return l
					}(y, m, _, x, x + b, w, T, r);
					u = Math.cos(x + b) * v + y, h = Math.sin(x + b) * _ + m;
					break;
				case ss.R:
					c = u = a[d++], p = h = a[d++];
					if (S = c + a[d++], M = p + a[d++], n) {
						if (ns(c, p, S, p, e, i, r) || ns(S, p, S, M, e, i, r) || ns(S, M, c, M, e, i, r) || ns(c,
								M, c, p, e, i, r)) return !0
					} else l = (l += as(S, p, S, M, i, r)) + as(c, M, c, p, i, r);
					break;
				case ss.Z:
					if (n) {
						if (ns(u, h, c, p, e, i, r)) return !0
					} else l += as(u, h, c, p, i, r);
					u = c, h = p
			}
		}
		return n || (t = h, o = p, Math.abs(t - o) < us) || (l += as(u, h, c, p, i, r) || 0), 0 !== l
	}
	var gs, ys = z({
			fill: "#000",
			stroke: null,
			strokePercent: 1,
			fillOpacity: 1,
			strokeOpacity: 1,
			lineDashOffset: 0,
			lineWidth: 1,
			lineCap: "butt",
			miterLimit: 10,
			strokeNoScale: !1,
			strokeFirst: !1
		}, xa),
		ms = {
			style: z({
				fill: !0,
				stroke: !0,
				strokePercent: !0,
				fillOpacity: !0,
				strokeOpacity: !0,
				lineDashOffset: !0,
				lineWidth: !0,
				miterLimit: !0
			}, ba.style)
		},
		vs = wr.concat(["invisible", "culling", "z", "z2", "zlevel", "parent"]),
		j = (u(a, gs = e), a.prototype.update = function() {
			var e = this,
				t = (gs.prototype.update.call(this), this.style);
			if (t.decal) {
				var n, i = this._decalEl = this._decalEl || new a,
					r = (i.buildPath === a.prototype.buildPath && (i.buildPath = function(t) {
						e.buildPath(t, e.shape)
					}), i.silent = !0, i.style);
				for (n in t) r[n] !== t[n] && (r[n] = t[n]);
				r.fill = t.fill ? t.decal : null, r.decal = null, r.shadowColor = null, t.strokeFirst && (r
					.stroke = null);
				for (var o = 0; o < vs.length; ++o) i[vs[o]] = this[vs[o]];
				i.__dirty |= _n
			} else this._decalEl && (this._decalEl = null)
		}, a.prototype.getDecalElement = function() {
			return this._decalEl
		}, a.prototype._init = function(t) {
			var e = ct(t),
				n = (this.shape = this.getDefaultShape(), this.getDefaultStyle());
			n && this.useStyle(n);
			for (var i = 0; i < e.length; i++) {
				var r = e[i],
					o = t[r];
				"style" === r ? this.style ? P(this.style, o) : this.useStyle(o) : "shape" === r ? P(this.shape,
					o) : gs.prototype.attrKV.call(this, r, o)
			}
			this.style || this.useStyle({})
		}, a.prototype.getDefaultStyle = function() {
			return null
		}, a.prototype.getDefaultShape = function() {
			return {}
		}, a.prototype.canBeInsideText = function() {
			return this.hasFill()
		}, a.prototype.getInsideTextFill = function() {
			var t, e = this.style.fill;
			if ("none" !== e) {
				if (V(e)) return .5 < (t = Mi(e, 0)) ? pr : .2 < t ? "#eee" : dr;
				if (e) return dr
			}
			return pr
		}, a.prototype.getInsideTextStroke = function(t) {
			var e = this.style.fill;
			if (V(e)) {
				var n = this.__zr;
				if (!(!n || !n.isDarkMode()) == Mi(t, 0) < .4) return e
			}
		}, a.prototype.buildPath = function(t, e, n) {}, a.prototype.pathUpdated = function() {
			this.__dirty &= ~xn
		}, a.prototype.getUpdatedPathProxy = function(t) {
			return this.path || this.createPathProxy(), this.path.beginPath(), this.buildPath(this.path, this
				.shape, t), this.path
		}, a.prototype.createPathProxy = function() {
			this.path = new es(!1)
		}, a.prototype.hasStroke = function() {
			var t = this.style,
				e = t.stroke;
			return !(null == e || "none" === e || !(0 < t.lineWidth))
		}, a.prototype.hasFill = function() {
			var t = this.style.fill;
			return null != t && "none" !== t
		}, a.prototype.getBoundingRect = function() {
			var t, e, n = this._rect,
				i = this.style,
				r = !n;
			return r && (t = !1, this.path || (t = !0, this.createPathProxy()), e = this.path, (t || this
						.__dirty & xn) && (e.beginPath(), this.buildPath(e, this.shape, !1), this
				.pathUpdated()), n = e.getBoundingRect()), this._rect = n, this.hasStroke() && this.path && 0 <
				this.path.len() ? (t = this._rectStroke || (this._rectStroke = n.clone()), (this.__dirty ||
					r) && (t.copy(n), e = i.strokeNoScale ? this.getLineScale() : 1, r = i.lineWidth, this
						.hasFill() || (i = this.strokeContainThreshold, r = Math.max(r, null == i ? 4 : i)),
						1e-10 < e) && (t.width += r / e, t.height += r / e, t.x -= r / e / 2, t.y -= r / e / 2),
					t) : n
		}, a.prototype.contain = function(t, e) {
			var n = this.transformCoordToLocal(t, e),
				i = this.getBoundingRect(),
				r = this.style;
			if (t = n[0], e = n[1], i.contain(t, e)) {
				n = this.path;
				if (this.hasStroke()) {
					i = r.lineWidth, r = r.strokeNoScale ? this.getLineScale() : 1;
					if (1e-10 < r && (this.hasFill() || (i = Math.max(i, this.strokeContainThreshold)), fs(n,
							i / r, !0, t, e))) return !0
				}
				if (this.hasFill()) return fs(n, 0, !1, t, e)
			}
			return !1
		}, a.prototype.dirtyShape = function() {
			this.__dirty |= xn, this._rect && (this._rect = null), this._decalEl && this._decalEl.dirtyShape(),
				this.markRedraw()
		}, a.prototype.dirty = function() {
			this.dirtyStyle(), this.dirtyShape()
		}, a.prototype.animateShape = function(t) {
			return this.animate("shape", t)
		}, a.prototype.updateDuringAnimation = function(t) {
			"style" === t ? this.dirtyStyle() : "shape" === t ? this.dirtyShape() : this.markRedraw()
		}, a.prototype.attrKV = function(t, e) {
			"shape" === t ? this.setShape(e) : gs.prototype.attrKV.call(this, t, e)
		}, a.prototype.setShape = function(t, e) {
			var n = (n = this.shape) || (this.shape = {});
			return "string" == typeof t ? n[t] = e : P(n, t), this.dirtyShape(), this
		}, a.prototype.shapeChanged = function() {
			return !!(this.__dirty & xn)
		}, a.prototype.createStyle = function(t) {
			return Et(ys, t)
		}, a.prototype._innerSaveToNormal = function(t) {
			gs.prototype._innerSaveToNormal.call(this, t);
			var e = this._normalState;
			t.shape && !e.shape && (e.shape = P({}, this.shape))
		}, a.prototype._applyStateObj = function(t, e, n, i, r, o) {
			gs.prototype._applyStateObj.call(this, t, e, n, i, r, o);
			var a, s = !(e && i);
			if (e && e.shape ? r ? i ? a = e.shape : (a = P({}, n.shape), P(a, e.shape)) : (a = P({}, (i ?
					this : n).shape), P(a, e.shape)) : s && (a = n.shape), a)
				if (r) {
					this.shape = P({}, this.shape);
					for (var l = {}, u = ct(a), h = 0; h < u.length; h++) {
						var c = u[h];
						"object" == typeof a[c] ? this.shape[c] = a[c] : l[c] = a[c]
					}
					this._transitionState(t, {
						shape: l
					}, o)
				} else this.shape = a, this.dirtyShape()
		}, a.prototype._mergeStates = function(t) {
			for (var e, n = gs.prototype._mergeStates.call(this, t), i = 0; i < t.length; i++) {
				var r = t[i];
				r.shape && this._mergeStyle(e = e || {}, r.shape)
			}
			return e && (n.shape = e), n
		}, a.prototype.getAnimationStyleProps = function() {
			return ms
		}, a.prototype.isZeroArea = function() {
			return !1
		}, a.extend = function(n) {
			u(r, i = a), r.prototype.getDefaultStyle = function() {
				return y(n.style)
			}, r.prototype.getDefaultShape = function() {
				return y(n.shape)
			};
			var i, t, e = r;

			function r(t) {
				var e = i.call(this, t) || this;
				return n.init && n.init.call(e, t), e
			}
			for (t in n) "function" == typeof n[t] && (e.prototype[t] = n[t]);
			return e
		}, a.initDefaultProps = ((yu = a.prototype).type = "path", yu.strokeContainThreshold = 5, yu
			.segmentIgnoreThreshold = 0, yu.subPixelOptimize = !1, yu.autoBatch = !1, void(yu.__dirty = 2 | _n |
				xn)), a);

	function a(t) {
		return gs.call(this, t) || this
	}
	var _s, xs = z({
			strokeFirst: !0,
			font: K,
			x: 0,
			y: 0,
			textAlign: "left",
			textBaseline: "top",
			miterLimit: 2
		}, ys),
		bs = (u(ws, _s = e), ws.prototype.hasStroke = function() {
			var t = this.style,
				e = t.stroke;
			return null != e && "none" !== e && 0 < t.lineWidth
		}, ws.prototype.hasFill = function() {
			var t = this.style.fill;
			return null != t && "none" !== t
		}, ws.prototype.createStyle = function(t) {
			return Et(xs, t)
		}, ws.prototype.setBoundingRect = function(t) {
			this._rect = t
		}, ws.prototype.getBoundingRect = function() {
			var t, e = this.style;
			return this._rect || (null != (t = e.text) ? t += "" : t = "", (t = Ir(t, e.font, e.textAlign, e
				.textBaseline)).x += e.x || 0, t.y += e.y || 0, this.hasStroke() && (e = e.lineWidth, t
				.x -= e / 2, t.y -= e / 2, t.width += e, t.height += e), this._rect = t), this._rect
		}, ws.initDefaultProps = void(ws.prototype.dirtyRectTolerance = 10), ws);

	function ws() {
		return null !== _s && _s.apply(this, arguments) || this
	}
	bs.prototype.type = "tspan";
	var Ss = z({
			x: 0,
			y: 0
		}, xa),
		Ms = {
			style: z({
				x: !0,
				y: !0,
				width: !0,
				height: !0,
				sx: !0,
				sy: !0,
				sWidth: !0,
				sHeight: !0
			}, ba.style)
		};
	u(Cs, Ts = e), Cs.prototype.createStyle = function(t) {
		return Et(Ss, t)
	}, Cs.prototype._getSize = function(t) {
		var e, n = this.style,
			i = n[t];
		return null != i ? i : (i = (i = n.image) && "string" != typeof i && i.width && i.height ? n.image :
				this.__image) ? null == (e = n[n = "width" === t ? "height" : "width"]) ? i[t] : i[t] / i[n] *
			e : 0
	}, Cs.prototype.getWidth = function() {
		return this._getSize("width")
	}, Cs.prototype.getHeight = function() {
		return this._getSize("height")
	}, Cs.prototype.getAnimationStyleProps = function() {
		return Ms
	}, Cs.prototype.getBoundingRect = function() {
		var t = this.style;
		return this._rect || (this._rect = new X(t.x || 0, t.y || 0, this.getWidth(), this.getHeight())), this
			._rect
	};
	var Ts, Is = Cs;

	function Cs() {
		return null !== Ts && Ts.apply(this, arguments) || this
	}
	Is.prototype.type = "image";
	var Ds = Math.round;

	function ks(t, e, n) {
		var i, r, o;
		if (e) return i = e.x1, r = e.x2, o = e.y1, e = e.y2, t.x1 = i, t.x2 = r, t.y1 = o, t.y2 = e, (n = n && n
			.lineWidth) && (Ds(2 * i) === Ds(2 * r) && (t.x1 = t.x2 = Ls(i, n, !0)), Ds(2 * o) === Ds(2 *
			e)) && (t.y1 = t.y2 = Ls(o, n, !0)), t
	}

	function As(t, e, n) {
		var i, r, o;
		if (e) return i = e.x, r = e.y, o = e.width, e = e.height, t.x = i, t.y = r, t.width = o, t.height = e, (n =
			n && n.lineWidth) && (t.x = Ls(i, n, !0), t.y = Ls(r, n, !0), t.width = Math.max(Ls(i + o, n, !
			1) - t.x, 0 === o ? 0 : 1), t.height = Math.max(Ls(r + e, n, !1) - t.y, 0 === e ? 0 : 1)), t
	}

	function Ls(t, e, n) {
		var i;
		return e ? ((i = Ds(2 * t)) + Ds(e)) % 2 == 0 ? i / 2 : (i + (n ? 1 : -1)) / 2 : t
	}
	var Ps, Os = function() {
			this.x = 0, this.y = 0, this.width = 0, this.height = 0
		},
		Rs = {},
		Ns = (u(Es, Ps = j), Es.prototype.getDefaultShape = function() {
			return new Os
		}, Es.prototype.buildPath = function(t, e) {
			var n, i, r, o, a, s, l, u, h, c, p, d, f, g;
			this.subPixelOptimize ? (n = (a = As(Rs, e, this.style)).x, i = a.y, r = a.width, o = a.height, a
				.r = e.r, e = a) : (n = e.x, i = e.y, r = e.width, o = e.height), e.r ? (a = t, p = (e = e)
				.x, d = e.y, f = e.width, g = e.height, e = e.r, f < 0 && (p += f, f = -f), g < 0 && (d +=
					g, g = -g), "number" == typeof e ? s = l = u = h = e : e instanceof Array ? 1 === e
				.length ? s = l = u = h = e[0] : 2 === e.length ? (s = u = e[0], l = h = e[1]) : 3 === e
				.length ? (s = e[0], l = h = e[1], u = e[2]) : (s = e[0], l = e[1], u = e[2], h = e[3]) :
				s = l = u = h = 0, f < s + l && (s *= f / (c = s + l), l *= f / c), f < u + h && (u *= f / (
					c = u + h), h *= f / c), g < l + u && (l *= g / (c = l + u), u *= g / c), g < s + h && (
					s *= g / (c = s + h), h *= g / c), a.moveTo(p + s, d), a.lineTo(p + f - l, d), 0 !==
				l && a.arc(p + f - l, d + l, l, -Math.PI / 2, 0), a.lineTo(p + f, d + g - u), 0 !== u && a
				.arc(p + f - u, d + g - u, u, 0, Math.PI / 2), a.lineTo(p + h, d + g), 0 !== h && a.arc(p +
					h, d + g - h, h, Math.PI / 2, Math.PI), a.lineTo(p, d + s), 0 !== s && a.arc(p + s, d +
					s, s, Math.PI, 1.5 * Math.PI)) : t.rect(n, i, r, o)
		}, Es.prototype.isZeroArea = function() {
			return !this.shape.width || !this.shape.height
		}, Es);

	function Es(t) {
		return Ps.call(this, t) || this
	}
	Ns.prototype.type = "rect";
	var zs, Bs = {
			fill: "#000"
		},
		Fs = {
			style: z({
				fill: !0,
				stroke: !0,
				fillOpacity: !0,
				strokeOpacity: !0,
				lineWidth: !0,
				fontSize: !0,
				lineHeight: !0,
				width: !0,
				height: !0,
				textShadowColor: !0,
				textShadowBlur: !0,
				textShadowOffsetX: !0,
				textShadowOffsetY: !0,
				backgroundColor: !0,
				padding: !0,
				borderColor: !0,
				borderWidth: !0,
				borderRadius: !0
			}, ba.style)
		},
		Vs = (u(Gs, zs = e), Gs.prototype.childrenRef = function() {
			return this._children
		}, Gs.prototype.update = function() {
			zs.prototype.update.call(this), this.styleChanged() && this._updateSubTexts();
			for (var t = 0; t < this._children.length; t++) {
				var e = this._children[t];
				e.zlevel = this.zlevel, e.z = this.z, e.z2 = this.z2, e.culling = this.culling, e.cursor = this
					.cursor, e.invisible = this.invisible
			}
		}, Gs.prototype.updateTransform = function() {
			var t = this.innerTransformable;
			t ? (t.updateTransform(), t.transform && (this.transform = t.transform)) : zs.prototype
				.updateTransform.call(this)
		}, Gs.prototype.getLocalTransform = function(t) {
			var e = this.innerTransformable;
			return e ? e.getLocalTransform(t) : zs.prototype.getLocalTransform.call(this, t)
		}, Gs.prototype.getComputedTransform = function() {
			return this.__hostTarget && (this.__hostTarget.getComputedTransform(), this.__hostTarget
				.updateInnerText(!0)), zs.prototype.getComputedTransform.call(this)
		}, Gs.prototype._updateSubTexts = function() {
			var t;
			this._childCursor = 0, Ys(t = this.style), E(t.rich, Ys), this.style.rich ? this
			._updateRichTexts() : this._updatePlainTexts(), this._children.length = this._childCursor, this
				.styleUpdated()
		}, Gs.prototype.addSelfToZr = function(t) {
			zs.prototype.addSelfToZr.call(this, t);
			for (var e = 0; e < this._children.length; e++) this._children[e].__zr = t
		}, Gs.prototype.removeSelfFromZr = function(t) {
			zs.prototype.removeSelfFromZr.call(this, t);
			for (var e = 0; e < this._children.length; e++) this._children[e].__zr = null
		}, Gs.prototype.getBoundingRect = function() {
			if (this.styleChanged() && this._updateSubTexts(), !this._rect) {
				for (var t = new X(0, 0, 0, 0), e = this._children, n = [], i = null, r = 0; r < e
					.length; r++) {
					var o = e[r],
						a = o.getBoundingRect(),
						o = o.getLocalTransform(n);
					o ? (t.copy(a), t.applyTransform(o), (i = i || t.clone()).union(t)) : (i = i || a.clone())
						.union(a)
				}
				this._rect = i || t
			}
			return this._rect
		}, Gs.prototype.setDefaultTextStyle = function(t) {
			this._defaultStyle = t || Bs
		}, Gs.prototype.setTextContent = function(t) {}, Gs.prototype._mergeStyle = function(t, e) {
			var n, i;
			return e && (n = e.rich, i = t.rich || n && {}, P(t, e), n && i ? (this._mergeRich(i, n), t.rich =
				i) : i && (t.rich = i)), t
		}, Gs.prototype._mergeRich = function(t, e) {
			for (var n = ct(e), i = 0; i < n.length; i++) {
				var r = n[i];
				t[r] = t[r] || {}, P(t[r], e[r])
			}
		}, Gs.prototype.getAnimationStyleProps = function() {
			return Fs
		}, Gs.prototype._getOrCreateChild = function(t) {
			var e = this._children[this._childCursor];
			return e && e instanceof t || (e = new t), (this._children[this._childCursor++] = e).__zr = this
				.__zr, e.parent = this, e
		}, Gs.prototype._updatePlainTexts = function() {
			for (var t, e = this.style, n = e.font || K, i = e.padding, r = function(t, e) {
						null != t && (t += "");
						var n, i = e.overflow,
							r = e.padding,
							o = e.font,
							a = "truncate" === i,
							s = kr(o),
							l = R(e.lineHeight, s),
							u = !!e.backgroundColor,
							h = "truncate" === e.lineOverflow,
							c = e.width,
							i = (n = null == c || "break" !== i && "breakAll" !== i ? t ? t.split("\n") : [] :
								t ? ma(t, e.font, c, "breakAll" === i, 0).lines : []).length * l,
							p = R(e.height, i);
						if (p < i && h && (h = Math.floor(p / l), n = n.slice(0, h)), t && a && null != c)
							for (var d = ua(c, o, e.ellipsis, {
									minChar: e.truncateMinChar,
									placeholder: e.placeholder
								}), f = 0; f < n.length; f++) n[f] = ha(n[f], d);
						for (var h = p, g = 0, f = 0; f < n.length; f++) g = Math.max(Mr(n[f], o), g);
						return null == c && (c = g), t = g, r && (h += r[0] + r[2], t += r[1] + r[3], c += r[
							1] + r[3]), {
							lines: n,
							height: p,
							outerWidth: t = u ? c : t,
							outerHeight: h,
							lineHeight: l,
							calculatedLineHeight: s,
							contentWidth: g,
							contentHeight: i,
							width: c
						}
					}(Ks(e), e), o = $s(e), a = !!e.backgroundColor, s = r.outerHeight, l = r.outerWidth, u = r
					.contentWidth, h = r.lines, c = r.lineHeight, p = this._defaultStyle, d = e.x || 0, f = e
					.y || 0, g = e.align || p.align || "left", y = e.verticalAlign || p.verticalAlign || "top",
					m = d, v = Dr(f, r.contentHeight, y), _ = ((o || i) && (t = Cr(d, l, g), f = Dr(f, s, y),
						o) && this._renderBackground(e, e, t, f, l, s), v += c / 2, i && (m = js(d, g, i),
							"top" === y ? v += i[0] : "bottom" === y && (v -= i[2])), 0), o = !1, x = (Zs((
						"fill" in e ? e : (o = !0, p)).fill)), b = (qs("stroke" in e ? e.stroke : a || p
						.autoStroke && !o ? null : (_ = 2, p.stroke))), w = 0 < e.textShadowBlur, S = null != e
					.width && ("truncate" === e.overflow || "break" === e.overflow || "breakAll" === e
					.overflow), M = r.calculatedLineHeight, T = 0; T < h.length; T++) {
				var I = this._getOrCreateChild(bs),
					C = I.createStyle();
				I.useStyle(C), C.text = h[T], C.x = m, C.y = v, g && (C.textAlign = g), C.textBaseline =
					"middle", C.opacity = e.opacity, C.strokeFirst = !0, w && (C.shadowBlur = e
						.textShadowBlur || 0, C.shadowColor = e.textShadowColor || "transparent", C
						.shadowOffsetX = e.textShadowOffsetX || 0, C.shadowOffsetY = e.textShadowOffsetY || 0),
					C.stroke = b, C.fill = x, b && (C.lineWidth = e.lineWidth || _, C.lineDash = e.lineDash, C
						.lineDashOffset = e.lineDashOffset || 0), C.font = n, Xs(C, e), v += c, S && I
					.setBoundingRect(new X(Cr(C.x, e.width, C.textAlign), Dr(C.y, M, C.textBaseline), u, M))
			}
		}, Gs.prototype._updateRichTexts = function() {
			for (var t = this.style, e = fa(Ks(t), t), n = e.width, i = e.outerWidth, r = e.outerHeight, o = t
					.padding, a = t.x || 0, s = t.y || 0, l = this._defaultStyle, u = t.align || l.align, l = t
					.verticalAlign || l.verticalAlign, a = Cr(a, i, u), u = Dr(s, r, l), h = a, c = u, p = (o &&
						(h += o[3], c += o[0]), h + n), d = ($s(t) && this._renderBackground(t, t, a, u, i, r),
						!!t.backgroundColor), f = 0; f < e.lines.length; f++) {
				for (var g = e.lines[f], y = g.tokens, m = y.length, v = g.lineHeight, _ = g.width, x = 0, b =
						h, w = p, S = m - 1, M = void 0; x < m && (!(M = y[x]).align || "left" === M.align);)
					this._placeToken(M, t, v, c, b, "left", d), _ -= M.width, b += M.width, x++;
				for (; 0 <= S && "right" === (M = y[S]).align;) this._placeToken(M, t, v, c, w, "right", d),
					_ -= M.width, w -= M.width, S--;
				for (b += (n - (b - h) - (p - w) - _) / 2; x <= S;) M = y[x], this._placeToken(M, t, v, c, b + M
					.width / 2, "center", d), b += M.width, x++;
				c += v
			}
		}, Gs.prototype._placeToken = function(t, e, n, i, r, o, a) {
			var s = e.rich[t.styleName] || {},
				l = (s.text = t.text, t.verticalAlign),
				u = i + n / 2;
			"top" === l ? u = i + t.height / 2 : "bottom" === l && (u = i + n - t.height / 2);
			!t.isLineHolder && $s(s) && this._renderBackground(s, e, "right" === o ? r - t.width : "center" ===
				o ? r - t.width / 2 : r, u - t.height / 2, t.width, t.height);
			var l = !!s.backgroundColor,
				i = t.textPadding,
				n = (i && (r = js(r, o, i), u -= t.height / 2 - i[0] - t.innerHeight / 2), this
					._getOrCreateChild(bs)),
				i = n.createStyle(),
				h = (n.useStyle(i), this._defaultStyle),
				c = !1,
				p = 0,
				d = Zs(("fill" in s ? s : "fill" in e ? e : (c = !0, h)).fill),
				l = qs("stroke" in s ? s.stroke : "stroke" in e ? e.stroke : l || a || h.autoStroke && !c ?
					null : (p = 2, h.stroke)),
				a = 0 < s.textShadowBlur || 0 < e.textShadowBlur,
				c = (i.text = t.text, i.x = r, i.y = u, a && (i.shadowBlur = s.textShadowBlur || e
						.textShadowBlur || 0, i.shadowColor = s.textShadowColor || e.textShadowColor ||
						"transparent", i.shadowOffsetX = s.textShadowOffsetX || e.textShadowOffsetX || 0, i
						.shadowOffsetY = s.textShadowOffsetY || e.textShadowOffsetY || 0), i.textAlign = o, i
					.textBaseline = "middle", i.font = t.font || K, i.opacity = wt(s.opacity, e.opacity, 1), Xs(
						i, s), l && (i.lineWidth = wt(s.lineWidth, e.lineWidth, p), i.lineDash = R(s.lineDash, e
						.lineDash), i.lineDashOffset = e.lineDashOffset || 0, i.stroke = l), d && (i.fill = d),
					t.contentWidth),
				h = t.contentHeight;
			n.setBoundingRect(new X(Cr(i.x, c, i.textAlign), Dr(i.y, h, i.textBaseline), c, h))
		}, Gs.prototype._renderBackground = function(t, e, n, i, r, o) {
			var a, s, l, u, h = t.backgroundColor,
				c = t.borderWidth,
				p = t.borderColor,
				d = h && h.image,
				f = h && !d,
				g = t.borderRadius,
				y = this,
				g = ((f || t.lineHeight || c && p) && ((a = this._getOrCreateChild(Ns)).useStyle(a
						.createStyle()), a.style.fill = null, (l = a.shape).x = n, l.y = i, l.width = r, l
						.height = o, l.r = g, a.dirtyShape()), f ? ((u = a.style).fill = h || null, u
						.fillOpacity = R(t.fillOpacity, 1)) : d && ((s = this._getOrCreateChild(Is)).onload =
						function() {
							y.dirtyStyle()
						}, (l = s.style).image = h.image, l.x = n, l.y = i, l.width = r, l.height = o), c &&
					p && ((u = a.style).lineWidth = c, u.stroke = p, u.strokeOpacity = R(t.strokeOpacity, 1), u
						.lineDash = t.borderDash, u.lineDashOffset = t.borderDashOffset || 0, a
						.strokeContainThreshold = 0, a.hasFill()) && a.hasStroke() && (u.strokeFirst = !0, u
						.lineWidth *= 2), (a || s).style);
			g.shadowBlur = t.shadowBlur || 0, g.shadowColor = t.shadowColor || "transparent", g.shadowOffsetX =
				t.shadowOffsetX || 0, g.shadowOffsetY = t.shadowOffsetY || 0, g.opacity = wt(t.opacity, e
					.opacity, 1)
		}, Gs.makeFont = function(t) {
			var e, n = "";
			return (n = null != (e = t).fontSize || e.fontFamily || e.fontWeight ? [t.fontStyle, t.fontWeight,
				"string" != typeof(e = t.fontSize) || -1 === e.indexOf("px") && -1 === e.indexOf(
				"rem") && -1 === e.indexOf("em") ? isNaN(+e) ? "12px" : e + "px" : e, t.fontFamily ||
				"sans-serif"
			].join(" ") : n) && It(n) || t.textFont || t.font
		}, Gs);

	function Gs(t) {
		var e = zs.call(this) || this;
		return e.type = "text", e._children = [], e._defaultStyle = Bs, e.attr(t), e
	}
	var Hs = {
			left: !0,
			right: 1,
			center: 1
		},
		Ws = {
			top: 1,
			bottom: 1,
			middle: 1
		},
		Us = ["fontStyle", "fontWeight", "fontSize", "fontFamily"];

	function Xs(t, e) {
		for (var n = 0; n < Us.length; n++) {
			var i = Us[n],
				r = e[i];
			null != r && (t[i] = r)
		}
	}

	function Ys(t) {
		var e;
		t && (t.font = Vs.makeFont(t), e = t.align, t.align = null == (e = "middle" === e ? "center" : e) || Hs[e] ?
			e : "left", e = t.verticalAlign, t.verticalAlign = null == (e = "center" === e ? "middle" : e) ||
			Ws[e] ? e : "top", t.padding) && (t.padding = Mt(t.padding))
	}

	function qs(t, e) {
		return null == t || e <= 0 || "transparent" === t || "none" === t ? null : t.image || t.colorStops ?
			"#000" : t
	}

	function Zs(t) {
		return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t
	}

	function js(t, e, n) {
		return "right" === e ? t - n[1] : "center" === e ? t + n[3] / 2 - n[1] / 2 : t + n[3]
	}

	function Ks(t) {
		t = t.text;
		return null != t && (t += ""), t
	}

	function $s(t) {
		return !!(t.backgroundColor || t.lineHeight || t.borderWidth && t.borderColor)
	}
	var k = No(),
		Qs = 1,
		Js = {},
		tl = No(),
		el = No(),
		nl = 0,
		il = 1,
		rl = 2,
		ol = ["emphasis", "blur", "select"],
		al = ["normal", "emphasis", "blur", "select"],
		sl = "highlight",
		ll = "downplay",
		ul = "select",
		hl = "unselect",
		cl = "toggleSelect";

	function pl(t) {
		return null != t && "none" !== t
	}

	function dl(t, e, n) {
		t.onHoverStateChange && (t.hoverState || 0) !== n && t.onHoverStateChange(e), t.hoverState = n
	}

	function fl(t) {
		dl(t, "emphasis", rl)
	}

	function gl(t) {
		t.hoverState === rl && dl(t, "normal", nl)
	}

	function yl(t) {
		dl(t, "blur", il)
	}

	function ml(t) {
		t.hoverState === il && dl(t, "normal", nl)
	}

	function vl(t) {
		t.selected = !0
	}

	function _l(t) {
		t.selected = !1
	}

	function xl(t, e, n) {
		e(t, n)
	}

	function bl(t, e, n) {
		xl(t, e, n), t.isGroup && t.traverse(function(t) {
			xl(t, e, n)
		})
	}

	function wl(t, e) {
		switch (e) {
			case "emphasis":
				t.hoverState = rl;
				break;
			case "normal":
				t.hoverState = nl;
				break;
			case "blur":
				t.hoverState = il;
				break;
			case "select":
				t.selected = !0
		}
	}

	function Sl(t, e, n) {
		var i = 0 <= C(t.currentStates, e),
			r = t.style.opacity,
			t = i ? null : function(t, e, n, i) {
				for (var r = t.style, o = {}, a = 0; a < e.length; a++) {
					var s = e[a],
						l = r[s];
					o[s] = null == l ? i && i[s] : l
				}
				for (a = 0; a < t.animators.length; a++) {
					var u = t.animators[a];
					u.__fromStateTransition && u.__fromStateTransition.indexOf(n) < 0 && "style" === u.targetName &&
						u.saveTo(o, e)
				}
				return o
			}(t, ["opacity"], e, {
				opacity: 1
			}),
			e = (n = n || {}).style || {};
		return null == e.opacity && (n = P({}, n), e = P({
			opacity: i ? r : .1 * t.opacity
		}, e), n.style = e), n
	}

	function Ml(t, e) {
		var n, i, r, o, a, s = this.states[t];
		if (this.style) {
			if ("emphasis" === t) return n = this, i = s, e = (e = e) && 0 <= C(e, "select"), a = !1,
				n instanceof j && (r = tl(n), o = e && r.selectFill || r.normalFill, e = e && r.selectStroke ||
					r.normalStroke, pl(o) || pl(e)) && ("inherit" === (r = (i = i || {}).style || {}).fill ? (
					a = !0, i = P({}, i), (r = P({}, r)).fill = o) : !pl(r.fill) && pl(o) ? (a = !0, i =
				P({}, i), (r = P({}, r)).fill = Ii(o)) : !pl(r.stroke) && pl(e) && (a || (i = P({}, i), r =
					P({}, r)), r.stroke = Ii(e)), i.style = r), i && null == i.z2 && (a || (i = P({}, i)), o = n
					.z2EmphasisLift, i.z2 = n.z2 + (null != o ? o : 10)), i;
			if ("blur" === t) return Sl(this, t, s);
			if ("select" === t) return e = this, (r = s) && null == r.z2 && (r = P({}, r), a = e.z2SelectLift, r
				.z2 = e.z2 + (null != a ? a : 9)), r
		}
		return s
	}

	function Tl(t) {
		t.stateProxy = Ml;
		var e = t.getTextContent(),
			t = t.getTextGuideLine();
		e && (e.stateProxy = Ml), t && (t.stateProxy = Ml)
	}

	function Il(t, e) {
		Rl(t, e) || t.__highByOuter || bl(t, fl)
	}

	function Cl(t, e) {
		Rl(t, e) || t.__highByOuter || bl(t, gl)
	}

	function Dl(t, e) {
		t.__highByOuter |= 1 << (e || 0), bl(t, fl)
	}

	function kl(t, e) {
		(t.__highByOuter &= ~(1 << (e || 0))) || bl(t, gl)
	}

	function Al(t) {
		bl(t, yl)
	}

	function Ll(t) {
		bl(t, ml)
	}

	function Pl(t) {
		bl(t, vl)
	}

	function Ol(t) {
		bl(t, _l)
	}

	function Rl(t, e) {
		return t.__highDownSilentOnTouch && e.zrByTouch
	}

	function Nl(r) {
		var e = r.getModel(),
			o = [],
			a = [];
		e.eachComponent(function(t, e) {
			var n = el(e),
				t = "series" === t,
				i = t ? r.getViewOfSeriesModel(e) : r.getViewOfComponentModel(e);
			t || a.push(i), n.isBlured && (i.group.traverse(function(t) {
				ml(t)
			}), t) && o.push(e), n.isBlured = !1
		}), E(a, function(t) {
			t && t.toggleBlurSeries && t.toggleBlurSeries(o, !1, e)
		})
	}

	function El(t, o, a, s) {
		var l, u, h, n = s.getModel();

		function c(t, e) {
			for (var n = 0; n < e.length; n++) {
				var i = t.getItemGraphicEl(e[n]);
				i && Ll(i)
			}
		}
		a = a || "coordinateSystem", null != t && o && "none" !== o && (l = n.getSeriesByIndex(t), (u = l
			.coordinateSystem) && u.master && (u = u.master), h = [], n.eachSeries(function(t) {
			var e = l === t,
				n = t.coordinateSystem,
				n = (n = n && n.master ? n.master : n) && u ? n === u : e;
			if (!("series" === a && !e || "coordinateSystem" === a && !n || "series" === o && e)) {
				if (s.getViewOfSeriesModel(t).group.traverse(function(t) {
						t.__highByOuter && e && "self" === o || yl(t)
					}), lt(o)) c(t.getData(), o);
				else if (O(o))
					for (var i = ct(o), r = 0; r < i.length; r++) c(t.getData(i[r]), o[i[r]]);
				h.push(t), el(t).isBlured = !0
			}
		}), n.eachComponent(function(t, e) {
			"series" !== t && (t = s.getViewOfComponentModel(e)) && t.toggleBlurSeries && t
				.toggleBlurSeries(h, !0, n)
		}))
	}

	function zl(t, e, n) {
		var i;
		null != t && null != e && (t = n.getModel().getComponent(t, e)) && (el(t).isBlured = !0, i = n
			.getViewOfComponentModel(t)) && i.focusBlurEnabled && i.group.traverse(function(t) {
			yl(t)
		})
	}

	function Bl(t, e, n, i) {
		var r = {
			focusSelf: !1,
			dispatchers: null
		};
		if (null == t || "series" === t || null == e || null == n) return r;
		t = i.getModel().getComponent(t, e);
		if (!t) return r;
		e = i.getViewOfComponentModel(t);
		if (!e || !e.findHighDownDispatchers) return r;
		for (var o, a = e.findHighDownDispatchers(n), s = 0; s < a.length; s++)
			if ("self" === k(a[s]).focus) {
				o = !0;
				break
			} return {
			focusSelf: o,
			dispatchers: a
		}
	}

	function Fl(i) {
		E(i.getAllData(), function(t) {
			var e = t.data,
				n = t.type;
			e.eachItemGraphicEl(function(t, e) {
				(i.isSelected(e, n) ? Pl : Ol)(t)
			})
		})
	}

	function Vl(t, e, n) {
		Xl(t, !0), bl(t, Tl);
		t = k(t), null != e ? (t.focus = e, t.blurScope = n) : t.focus && (t.focus = null)
	}

	function Gl(t, e, n, i) {
		i ? Xl(t, !1) : Vl(t, e, n)
	}
	var Hl = ["emphasis", "blur", "select"],
		Wl = {
			itemStyle: "getItemStyle",
			lineStyle: "getLineStyle",
			areaStyle: "getAreaStyle"
		};

	function Ul(t, e, n, i) {
		n = n || "itemStyle";
		for (var r = 0; r < Hl.length; r++) {
			var o = Hl[r],
				a = e.getModel([o, n]);
			t.ensureState(o).style = i ? i(a) : a[Wl[n]]()
		}
	}

	function Xl(t, e) {
		var e = !1 === e,
			n = t;
		t.highDownSilentOnTouch && (n.__highDownSilentOnTouch = t.highDownSilentOnTouch), e && !n
			.__highDownDispatcher || (n.__highByOuter = n.__highByOuter || 0, n.__highDownDispatcher = !e)
	}

	function Yl(t) {
		return !(!t || !t.__highDownDispatcher)
	}

	function ql(t) {
		t = t.type;
		return t === ul || t === hl || t === cl
	}

	function Zl(t) {
		t = t.type;
		return t === sl || t === ll
	}
	var jl = es.CMD,
		Kl = [
			[],
			[],
			[]
		],
		$l = Math.sqrt,
		Ql = Math.atan2;
	var Jl = Math.sqrt,
		tu = Math.sin,
		eu = Math.cos,
		nu = Math.PI;

	function iu(t) {
		return Math.sqrt(t[0] * t[0] + t[1] * t[1])
	}

	function ru(t, e) {
		return (t[0] * e[0] + t[1] * e[1]) / (iu(t) * iu(e))
	}

	function ou(t, e) {
		return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(ru(t, e))
	}

	function au(t, e, n, i, r, o, a, s, l, u, h) {
		var l = l * (nu / 180),
			c = eu(l) * (t - n) / 2 + tu(l) * (e - i) / 2,
			p = -1 * tu(l) * (t - n) / 2 + eu(l) * (e - i) / 2,
			d = c * c / (a * a) + p * p / (s * s),
			d = (1 < d && (a *= Jl(d), s *= Jl(d)), (r === o ? -1 : 1) * Jl((a * a * (s * s) - a * a * (p * p) - s *
				s * (c * c)) / (a * a * (p * p) + s * s * (c * c))) || 0),
			r = d * a * p / s,
			d = d * -s * c / a,
			t = (t + n) / 2 + eu(l) * r - tu(l) * d,
			n = (e + i) / 2 + tu(l) * r + eu(l) * d,
			e = ou([1, 0], [(c - r) / a, (p - d) / s]),
			i = [(c - r) / a, (p - d) / s],
			c = [(-1 * c - r) / a, (-1 * p - d) / s],
			r = ou(i, c);
		ru(i, c) <= -1 && (r = nu), (r = 1 <= ru(i, c) ? 0 : r) < 0 && (p = Math.round(r / nu * 1e6) / 1e6, r = 2 *
			nu + p % 2 * nu), h.addData(u, t, n, a, s, e, r, l, o)
	}
	var su = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,
		lu = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;
	u(cu, uu = j), cu.prototype.applyTransform = function(t) {};
	var uu, hu = cu;

	function cu() {
		return null !== uu && uu.apply(this, arguments) || this
	}

	function pu(t) {
		return null != t.setData
	}

	function du(t, e) {
		var S = function(t) {
				var e = new es;
				if (t) {
					var n, i = 0,
						r = 0,
						o = i,
						a = r,
						s = es.CMD,
						l = t.match(su);
					if (l) {
						for (var u = 0; u < l.length; u++) {
							for (var h = l[u], c = h.charAt(0), p = void 0, d = h.match(lu) || [], f = d.length, g =
									0; g < f; g++) d[g] = parseFloat(d[g]);
							for (var y = 0; y < f;) {
								var m = void 0,
									v = void 0,
									_ = void 0,
									x = void 0,
									b = void 0,
									w = void 0,
									S = void 0,
									M = i,
									T = r,
									I = void 0,
									C = void 0;
								switch (c) {
									case "l":
										i += d[y++], r += d[y++], p = s.L, e.addData(p, i, r);
										break;
									case "L":
										i = d[y++], r = d[y++], p = s.L, e.addData(p, i, r);
										break;
									case "m":
										i += d[y++], r += d[y++], p = s.M, e.addData(p, i, r), o = i, a = r, c =
										"l";
										break;
									case "M":
										i = d[y++], r = d[y++], p = s.M, e.addData(p, i, r), o = i, a = r, c = "L";
										break;
									case "h":
										i += d[y++], p = s.L, e.addData(p, i, r);
										break;
									case "H":
										i = d[y++], p = s.L, e.addData(p, i, r);
										break;
									case "v":
										r += d[y++], p = s.L, e.addData(p, i, r);
										break;
									case "V":
										r = d[y++], p = s.L, e.addData(p, i, r);
										break;
									case "C":
										p = s.C, e.addData(p, d[y++], d[y++], d[y++], d[y++], d[y++], d[y++]), i =
											d[y - 2], r = d[y - 1];
										break;
									case "c":
										p = s.C, e.addData(p, d[y++] + i, d[y++] + r, d[y++] + i, d[y++] + r, d[
											y++] + i, d[y++] + r), i += d[y - 2], r += d[y - 1];
										break;
									case "S":
										m = i, v = r, I = e.len(), C = e.data, n === s.C && (m += i - C[I - 4], v +=
											r - C[I - 3]), p = s.C, M = d[y++], T = d[y++], i = d[y++], r = d[
											y++], e.addData(p, m, v, M, T, i, r);
										break;
									case "s":
										m = i, v = r, I = e.len(), C = e.data, n === s.C && (m += i - C[I - 4], v +=
												r - C[I - 3]), p = s.C, M = i + d[y++], T = r + d[y++], i += d[y++],
											r += d[y++], e.addData(p, m, v, M, T, i, r);
										break;
									case "Q":
										M = d[y++], T = d[y++], i = d[y++], r = d[y++], p = s.Q, e.addData(p, M, T,
											i, r);
										break;
									case "q":
										M = d[y++] + i, T = d[y++] + r, i += d[y++], r += d[y++], p = s.Q, e
											.addData(p, M, T, i, r);
										break;
									case "T":
										m = i, v = r, I = e.len(), C = e.data, n === s.Q && (m += i - C[I - 4], v +=
											r - C[I - 3]), i = d[y++], r = d[y++], p = s.Q, e.addData(p, m, v,
											i, r);
										break;
									case "t":
										m = i, v = r, I = e.len(), C = e.data, n === s.Q && (m += i - C[I - 4], v +=
											r - C[I - 3]), i += d[y++], r += d[y++], p = s.Q, e.addData(p, m, v,
											i, r);
										break;
									case "A":
										_ = d[y++], x = d[y++], b = d[y++], w = d[y++], S = d[y++], au(M = i, T = r,
											i = d[y++], r = d[y++], w, S, _, x, b, p = s.A, e);
										break;
									case "a":
										_ = d[y++], x = d[y++], b = d[y++], w = d[y++], S = d[y++], au(M = i, T = r,
											i += d[y++], r += d[y++], w, S, _, x, b, p = s.A, e)
								}
							}
							"z" !== c && "Z" !== c || (p = s.Z, e.addData(p), i = o, r = a), n = p
						}
						e.toStatic()
					}
				}
				return e
			}(t),
			t = P({}, e);
		return t.buildPath = function(t) {
			var e;
			pu(t) ? (t.setData(S.data), (e = t.getContext()) && t.rebuildPath(e, 1)) : S.rebuildPath(e = t, 1)
		}, t.applyTransform = function(t) {
			var e = S,
				n = t;
			if (n) {
				for (var i, r, o, a, s = e.data, l = e.len(), u = jl.M, h = jl.C, c = jl.L, p = jl.R, d = jl.A,
						f = jl.Q, g = 0, y = 0; g < l;) {
					switch (i = s[g++], y = g, r = 0, i) {
						case u:
						case c:
							r = 1;
							break;
						case h:
							r = 3;
							break;
						case f:
							r = 2;
							break;
						case d:
							var m = n[4],
								v = n[5],
								_ = $l(n[0] * n[0] + n[1] * n[1]),
								x = $l(n[2] * n[2] + n[3] * n[3]),
								b = Ql(-n[1] / x, n[0] / _);
							s[g] *= _, s[g++] += m, s[g] *= x, s[g++] += v, s[g++] *= _, s[g++] *= x, s[g++] +=
								b, s[g++] += b, y = g += 2;
							break;
						case p:
							a[0] = s[g++], a[1] = s[g++], ee(a, a, n), s[y++] = a[0], s[y++] = a[1], a[0] += s[
								g++], a[1] += s[g++], ee(a, a, n), s[y++] = a[0], s[y++] = a[1]
					}
					for (o = 0; o < r; o++) {
						var w = Kl[o];
						w[0] = s[g++], w[1] = s[g++], ee(w, w, n), s[y++] = w[0], s[y++] = w[1]
					}
				}
				e.increaseVersion()
			}
			this.dirtyShape()
		}, t
	}
	var fu, gu = function() {
			this.cx = 0, this.cy = 0, this.r = 0
		},
		yu = (u(mu, fu = j), mu.prototype.getDefaultShape = function() {
			return new gu
		}, mu.prototype.buildPath = function(t, e) {
			t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI)
		}, mu);

	function mu(t) {
		return fu.call(this, t) || this
	}
	yu.prototype.type = "circle";
	var vu, _u = function() {
			this.cx = 0, this.cy = 0, this.rx = 0, this.ry = 0
		},
		xu = (u(bu, vu = j), bu.prototype.getDefaultShape = function() {
			return new _u
		}, bu.prototype.buildPath = function(t, e) {
			var n = e.cx,
				i = e.cy,
				r = e.rx,
				e = e.ry,
				o = .5522848 * r,
				a = .5522848 * e;
			t.moveTo(n - r, i), t.bezierCurveTo(n - r, i - a, n - o, i - e, n, i - e), t.bezierCurveTo(n + o,
					i - e, n + r, i - a, n + r, i), t.bezierCurveTo(n + r, i + a, n + o, i + e, n, i + e), t
				.bezierCurveTo(n - o, i + e, n - r, i + a, n - r, i), t.closePath()
		}, bu);

	function bu(t) {
		return vu.call(this, t) || this
	}
	xu.prototype.type = "ellipse";
	var wu = Math.PI,
		Su = 2 * wu,
		Mu = Math.sin,
		Tu = Math.cos,
		Iu = Math.acos,
		Cu = Math.atan2,
		Du = Math.abs,
		ku = Math.sqrt,
		Au = Math.max,
		Lu = Math.min,
		Pu = 1e-4;

	function Ou(t, e, n, i, r, o, a) {
		var s = t - n,
			l = e - i,
			a = (a ? o : -o) / ku(s * s + l * l),
			l = a * l,
			a = -a * s,
			s = t + l,
			t = e + a,
			e = n + l,
			n = i + a,
			i = (s + e) / 2,
			u = (t + n) / 2,
			h = e - s,
			c = n - t,
			p = h * h + c * c,
			o = r - o,
			s = s * n - e * t,
			n = (c < 0 ? -1 : 1) * ku(Au(0, o * o * p - s * s)),
			e = (s * c - h * n) / p,
			t = (-s * h - c * n) / p,
			d = (s * c + h * n) / p,
			s = (-s * h + c * n) / p,
			h = e - i,
			c = t - u,
			n = d - i,
			p = s - u;
		return n * n + p * p < h * h + c * c && (e = d, t = s), {
			cx: e,
			cy: t,
			x0: -l,
			y0: -a,
			x1: e * (r / o - 1),
			y1: t * (r / o - 1)
		}
	}

	function Ru(t, e) {
		var n, i, r, o, a, s, l, u, h, c, p, d, f, g, y, m, v, _, x, b, w, S, M, T, I, C, D, k, A, L, P = Au(e.r,
			0),
			O = Au(e.r0 || 0, 0),
			R = 0 < P;
		(R || 0 < O) && (R || (P = O, O = 0), P < O && (R = P, P = O, O = R), R = e.startAngle, n = e.endAngle,
			isNaN(R) || isNaN(n) || (i = e.cx, r = e.cy, o = !!e.clockwise, m = Du(n - R), Pu < (a = Su < m && m %
				Su) && (m = a), Pu < P ? Su - Pu < m ? (t.moveTo(i + P * Tu(R), r + P * Mu(R)), t.arc(i, r, P,
				R, n, !o), Pu < O && (t.moveTo(i + O * Tu(n), r + O * Mu(n)), t.arc(i, r, O, n, R, o))) : (S =
				w = b = x = _ = v = c = h = C = I = T = M = u = l = s = a = void 0, p = P * Tu(R), d = P * Mu(
				R), f = O * Tu(n), g = O * Mu(n), (y = Pu < m) && ((e = e.cornerRadius) && (a = (e = function(
					t) {
						if (F(t)) {
							var e = t.length;
							if (!e) return t;
							e = 1 === e ? [t[0], t[0], 0, 0] : 2 === e ? [t[0], t[0], t[1], t[1]] :
								3 === e ? t.concat(t[2]) : t
						} else e = [t, t, t, t];
						return e
					}(e))[0], s = e[1], l = e[2], u = e[3]), e = Du(P - O) / 2, M = Lu(e, l), T = Lu(e, u), I =
					Lu(e, a), C = Lu(e, s), v = h = Au(M, T), _ = c = Au(I, C), Pu < h || Pu < c) && (x = P *
					Tu(n), b = P * Mu(n), w = O * Tu(R), S = O * Mu(R), m < wu) && (e = function(t, e, n, i, r,
					o, a, s) {
					var l = (s = s - o) * (n = n - t) - (a = a - r) * (i = i - e);
					if (!(l * l < Pu)) return [t + (l = (a * (e - o) - s * (t - r)) / l) * n, e + l * i]
				}(p, d, w, S, x, b, f, g)) && (M = p - e[0], T = d - e[1], I = x - e[0], C = b - e[1], m = 1 /
					Mu(Iu((M * I + T * C) / (ku(M * M + T * T) * ku(I * I + C * C))) / 2), M = ku(e[0] * e[0] +
						e[1] * e[1]), v = Lu(h, (P - M) / (1 + m)), _ = Lu(c, (O - M) / (m - 1))), y ? Pu < v ?
				(D = Lu(l, v), k = Lu(u, v), A = Ou(w, S, p, d, P, D, o), L = Ou(x, b, f, g, P, k, o), t.moveTo(
					i + A.cx + A.x0, r + A.cy + A.y0), v < h && D === k ? t.arc(i + A.cx, r + A.cy, v, Cu(A
					.y0, A.x0), Cu(L.y0, L.x0), !o) : (0 < D && t.arc(i + A.cx, r + A.cy, D, Cu(A.y0, A.x0),
					Cu(A.y1, A.x1), !o), t.arc(i, r, P, Cu(A.cy + A.y1, A.cx + A.x1), Cu(L.cy + L.y1, L
					.cx + L.x1), !o), 0 < k && t.arc(i + L.cx, r + L.cy, k, Cu(L.y1, L.x1), Cu(L.y0, L
					.x0), !o))) : (t.moveTo(i + p, r + d), t.arc(i, r, P, R, n, !o)) : t.moveTo(i + p, r + d),
				Pu < O && y ? Pu < _ ? (D = Lu(a, _), A = Ou(f, g, x, b, O, -(k = Lu(s, _)), o), L = Ou(p, d, w,
					S, O, -D, o), t.lineTo(i + A.cx + A.x0, r + A.cy + A.y0), _ < c && D === k ? t.arc(i + A
					.cx, r + A.cy, _, Cu(A.y0, A.x0), Cu(L.y0, L.x0), !o) : (0 < k && t.arc(i + A.cx, r + A
					.cy, k, Cu(A.y0, A.x0), Cu(A.y1, A.x1), !o), t.arc(i, r, O, Cu(A.cy + A.y1, A.cx + A
					.x1), Cu(L.cy + L.y1, L.cx + L.x1), o), 0 < D && t.arc(i + L.cx, r + L.cy, D, Cu(L
					.y1, L.x1), Cu(L.y0, L.x0), !o))) : (t.lineTo(i + f, r + g), t.arc(i, r, O, n, R, o)) : t
				.lineTo(i + f, r + g)) : t.moveTo(i, r), t.closePath()))
	}
	var Nu, Eu = function() {
			this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI,
				this.clockwise = !0, this.cornerRadius = 0
		},
		zu = (u(Bu, Nu = j), Bu.prototype.getDefaultShape = function() {
			return new Eu
		}, Bu.prototype.buildPath = function(t, e) {
			Ru(t, e)
		}, Bu.prototype.isZeroArea = function() {
			return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0
		}, Bu);

	function Bu(t) {
		return Nu.call(this, t) || this
	}
	zu.prototype.type = "sector";
	var Fu, Vu = function() {
			this.cx = 0, this.cy = 0, this.r = 0, this.r0 = 0
		},
		Gu = (u(Hu, Fu = j), Hu.prototype.getDefaultShape = function() {
			return new Vu
		}, Hu.prototype.buildPath = function(t, e) {
			var n = e.cx,
				i = e.cy,
				r = 2 * Math.PI;
			t.moveTo(n + e.r, i), t.arc(n, i, e.r, 0, r, !1), t.moveTo(n + e.r0, i), t.arc(n, i, e.r0, 0, r, !0)
		}, Hu);

	function Hu(t) {
		return Fu.call(this, t) || this
	}

	function Wu(t, e, n) {
		var i = e.smooth,
			r = e.points;
		if (r && 2 <= r.length) {
			if (i)
				for (var o = function(t, e, n, i) {
						var r, o, a = [],
							s = [],
							l = [],
							u = [];
						if (i) {
							for (var h = [1 / 0, 1 / 0], c = [-1 / 0, -1 / 0], p = 0, d = t.length; p < d; p++)
								ne(h, h, t[p]), ie(c, c, t[p]);
							ne(h, h, i[0]), ie(c, c, i[1])
						}
						for (p = 0, d = t.length; p < d; p++) {
							var f = t[p];
							if (n) r = t[p ? p - 1 : d - 1], o = t[(p + 1) % d];
							else {
								if (0 === p || p === d - 1) {
									a.push(Wt(t[p]));
									continue
								}
								r = t[p - 1], o = t[p + 1]
							}
							Xt(s, o, r), Zt(s, s, e);
							var g = Kt(f, r),
								y = Kt(f, o),
								m = g + y,
								m = (0 !== m && (g /= m, y /= m), Zt(l, s, -g), Zt(u, s, y), Ut([], f, l)),
								g = Ut([], f, u);
							i && (ie(m, m, h), ne(m, m, c), ie(g, g, h), ne(g, g, c)), a.push(m), a.push(g)
						}
						return n && a.push(a.shift()), a
					}(r, i, n, e.smoothConstraint), a = (t.moveTo(r[0][0], r[0][1]), r.length), s = 0; s < (n ? a :
						a - 1); s++) {
					var l = o[2 * s],
						u = o[2 * s + 1],
						h = r[(s + 1) % a];
					t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1])
				} else {
					t.moveTo(r[0][0], r[0][1]);
					for (var s = 1, c = r.length; s < c; s++) t.lineTo(r[s][0], r[s][1])
				}
			n && t.closePath()
		}
	}
	Gu.prototype.type = "ring";
	var Uu, Xu = function() {
			this.points = null, this.smooth = 0, this.smoothConstraint = null
		},
		Yu = (u(qu, Uu = j), qu.prototype.getDefaultShape = function() {
			return new Xu
		}, qu.prototype.buildPath = function(t, e) {
			Wu(t, e, !0)
		}, qu);

	function qu(t) {
		return Uu.call(this, t) || this
	}
	Yu.prototype.type = "polygon";
	var Zu, ju = function() {
			this.points = null, this.percent = 1, this.smooth = 0, this.smoothConstraint = null
		},
		Ku = (u($u, Zu = j), $u.prototype.getDefaultStyle = function() {
			return {
				stroke: "#000",
				fill: null
			}
		}, $u.prototype.getDefaultShape = function() {
			return new ju
		}, $u.prototype.buildPath = function(t, e) {
			Wu(t, e, !1)
		}, $u);

	function $u(t) {
		return Zu.call(this, t) || this
	}
	Ku.prototype.type = "polyline";
	var Qu, Ju = {},
		th = function() {
			this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1
		},
		eh = (u(nh, Qu = j), nh.prototype.getDefaultStyle = function() {
			return {
				stroke: "#000",
				fill: null
			}
		}, nh.prototype.getDefaultShape = function() {
			return new th
		}, nh.prototype.buildPath = function(t, e) {
			o = (this.subPixelOptimize ? (n = (o = ks(Ju, e, this.style)).x1, i = o.y1, r = o.x2, o) : (n = e
				.x1, i = e.y1, r = e.x2, e)).y2;
			var n, i, r, o, e = e.percent;
			0 !== e && (t.moveTo(n, i), e < 1 && (r = n * (1 - e) + r * e, o = i * (1 - e) + o * e), t.lineTo(r,
				o))
		}, nh.prototype.pointAt = function(t) {
			var e = this.shape;
			return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t]
		}, nh);

	function nh(t) {
		return Qu.call(this, t) || this
	}
	eh.prototype.type = "line";
	var ih = [],
		rh = function() {
			this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.percent = 1
		};

	function oh(t, e, n) {
		var i = t.cpx2,
			r = t.cpy2;
		return null != i || null != r ? [(n ? Fn : Bn)(t.x1, t.cpx1, t.cpx2, t.x2, e), (n ? Fn : Bn)(t.y1, t.cpy1, t
			.cpy2, t.y2, e)] : [(n ? Xn : Un)(t.x1, t.cpx1, t.x2, e), (n ? Xn : Un)(t.y1, t.cpy1, t.y2, e)]
	}
	u(lh, ah = j), lh.prototype.getDefaultStyle = function() {
		return {
			stroke: "#000",
			fill: null
		}
	}, lh.prototype.getDefaultShape = function() {
		return new rh
	}, lh.prototype.buildPath = function(t, e) {
		var n = e.x1,
			i = e.y1,
			r = e.x2,
			o = e.y2,
			a = e.cpx1,
			s = e.cpy1,
			l = e.cpx2,
			u = e.cpy2,
			e = e.percent;
		0 !== e && (t.moveTo(n, i), null == l || null == u ? (e < 1 && (qn(n, a, r, e, ih), a = ih[1], r = ih[
			2], qn(i, s, o, e, ih), s = ih[1], o = ih[2]), t.quadraticCurveTo(a, s, r, o)) : (e < 1 && (
			Hn(n, a, l, r, e, ih), a = ih[1], l = ih[2], r = ih[3], Hn(i, s, u, o, e, ih), s = ih[
			1], u = ih[2], o = ih[3]), t.bezierCurveTo(a, s, l, u, r, o)))
	}, lh.prototype.pointAt = function(t) {
		return oh(this.shape, t, !1)
	}, lh.prototype.tangentAt = function(t) {
		t = oh(this.shape, t, !0);
		return jt(t, t)
	};
	var ah, sh = lh;

	function lh(t) {
		return ah.call(this, t) || this
	}
	sh.prototype.type = "bezier-curve";
	var uh, hh = function() {
			this.cx = 0, this.cy = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI, this
				.clockwise = !0
		},
		ch = (u(ph, uh = j), ph.prototype.getDefaultStyle = function() {
			return {
				stroke: "#000",
				fill: null
			}
		}, ph.prototype.getDefaultShape = function() {
			return new hh
		}, ph.prototype.buildPath = function(t, e) {
			var n = e.cx,
				i = e.cy,
				r = Math.max(e.r, 0),
				o = e.startAngle,
				a = e.endAngle,
				e = e.clockwise,
				s = Math.cos(o),
				l = Math.sin(o);
			t.moveTo(s * r + n, l * r + i), t.arc(n, i, r, o, a, !e)
		}, ph);

	function ph(t) {
		return uh.call(this, t) || this
	}
	ch.prototype.type = "arc";
	u(gh, dh = j), gh.prototype._updatePathDirty = function() {
		for (var t = this.shape.paths, e = this.shapeChanged(), n = 0; n < t.length; n++) e = e || t[n]
			.shapeChanged();
		e && this.dirtyShape()
	}, gh.prototype.beforeBrush = function() {
		this._updatePathDirty();
		for (var t = this.shape.paths || [], e = this.getGlobalScale(), n = 0; n < t.length; n++) t[n].path ||
			t[n].createPathProxy(), t[n].path.setScale(e[0], e[1], t[n].segmentIgnoreThreshold)
	}, gh.prototype.buildPath = function(t, e) {
		for (var n = e.paths || [], i = 0; i < n.length; i++) n[i].buildPath(t, n[i].shape, !0)
	}, gh.prototype.afterBrush = function() {
		for (var t = this.shape.paths || [], e = 0; e < t.length; e++) t[e].pathUpdated()
	}, gh.prototype.getBoundingRect = function() {
		return this._updatePathDirty.call(this), j.prototype.getBoundingRect.call(this)
	};
	var dh, fh = gh;

	function gh() {
		var t = null !== dh && dh.apply(this, arguments) || this;
		return t.type = "compound", t
	}
	mh.prototype.addColorStop = function(t, e) {
		this.colorStops.push({
			offset: t,
			color: e
		})
	};
	var yh = mh;

	function mh(t) {
		this.colorStops = t || []
	}
	u(xh, vh = yh);
	var vh, _h = xh;

	function xh(t, e, n, i, r, o) {
		r = vh.call(this, r) || this;
		return r.x = null == t ? 0 : t, r.y = null == e ? 0 : e, r.x2 = null == n ? 1 : n, r.y2 = null == i ? 0 : i,
			r.type = "linear", r.global = o || !1, r
	}
	u(wh, bh = yh);
	var bh, yh = wh;

	function wh(t, e, n, i, r) {
		i = bh.call(this, i) || this;
		return i.x = null == t ? .5 : t, i.y = null == e ? .5 : e, i.r = null == n ? .5 : n, i.type = "radial", i
			.global = r || !1, i
	}
	var Sh = [0, 0],
		Mh = [0, 0],
		Th = new H,
		Ih = new H,
		Ch = (Dh.prototype.fromBoundingRect = function(t, e) {
			var n = this._corners,
				i = this._axes,
				r = t.x,
				o = t.y,
				a = r + t.width,
				t = o + t.height;
			if (n[0].set(r, o), n[1].set(a, o), n[2].set(a, t), n[3].set(r, t), e)
				for (var s = 0; s < 4; s++) n[s].transform(e);
			H.sub(i[0], n[1], n[0]), H.sub(i[1], n[3], n[0]), i[0].normalize(), i[1].normalize();
			for (s = 0; s < 2; s++) this._origin[s] = i[s].dot(n[0])
		}, Dh.prototype.intersect = function(t, e) {
			var n = !0,
				i = !e;
			return Th.set(1 / 0, 1 / 0), Ih.set(0, 0), !this._intersectCheckOneSide(this, t, Th, Ih, i, 1) && (
					n = !1, i) || !this._intersectCheckOneSide(t, this, Th, Ih, i, -1) && (n = !1, i) || i || H
				.copy(e, n ? Th : Ih), n
		}, Dh.prototype._intersectCheckOneSide = function(t, e, n, i, r, o) {
			for (var a = !0, s = 0; s < 2; s++) {
				var l = this._axes[s];
				if (this._getProjMinMaxOnAxis(s, t._corners, Sh), this._getProjMinMaxOnAxis(s, e._corners, Mh),
					Sh[1] < Mh[0] || Mh[1] < Sh[0]) {
					if (a = !1, r) return a;
					var u = Math.abs(Mh[0] - Sh[1]),
						h = Math.abs(Sh[0] - Mh[1]);
					Math.min(u, h) > i.len() && (u < h ? H.scale(i, l, -u * o) : H.scale(i, l, h * o))
				} else n && (u = Math.abs(Mh[0] - Sh[1]), h = Math.abs(Sh[0] - Mh[1]), Math.min(u, h) < n
				.len()) && (u < h ? H.scale(n, l, u * o) : H.scale(n, l, -h * o))
			}
			return a
		}, Dh.prototype._getProjMinMaxOnAxis = function(t, e, n) {
			for (var i = this._axes[t], r = this._origin, o = e[0].dot(i) + r[t], a = o, s = o, l = 1; l < e
				.length; l++) var u = e[l].dot(i) + r[t],
				a = Math.min(u, a),
				s = Math.max(u, s);
			n[0] = a, n[1] = s
		}, Dh);

	function Dh(t, e) {
		this._corners = [], this._axes = [], this._origin = [0, 0];
		for (var n = 0; n < 4; n++) this._corners[n] = new H;
		for (n = 0; n < 2; n++) this._axes[n] = new H;
		t && this.fromBoundingRect(t, e)
	}
	var kh, Ah = [],
		e = (u(Lh, kh = e), Lh.prototype.traverse = function(t, e) {
			t.call(e, this)
		}, Lh.prototype.useStyle = function() {
			this.style = {}
		}, Lh.prototype.getCursor = function() {
			return this._cursor
		}, Lh.prototype.innerAfterBrush = function() {
			this._cursor = this._displayables.length
		}, Lh.prototype.clearDisplaybles = function() {
			this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.markRedraw(), this
				.notClear = !1
		}, Lh.prototype.clearTemporalDisplayables = function() {
			this._temporaryDisplayables = []
		}, Lh.prototype.addDisplayable = function(t, e) {
			(e ? this._temporaryDisplayables : this._displayables).push(t), this.markRedraw()
		}, Lh.prototype.addDisplayables = function(t, e) {
			e = e || !1;
			for (var n = 0; n < t.length; n++) this.addDisplayable(t[n], e)
		}, Lh.prototype.getDisplayables = function() {
			return this._displayables
		}, Lh.prototype.getTemporalDisplayables = function() {
			return this._temporaryDisplayables
		}, Lh.prototype.eachPendingDisplayable = function(t) {
			for (var e = this._cursor; e < this._displayables.length; e++) t && t(this._displayables[e]);
			for (e = 0; e < this._temporaryDisplayables.length; e++) t && t(this._temporaryDisplayables[e])
		}, Lh.prototype.update = function() {
			this.updateTransform();
			for (var t = this._cursor; t < this._displayables.length; t++)(e = this._displayables[t]).parent =
				this, e.update(), e.parent = null;
			for (var e, t = 0; t < this._temporaryDisplayables.length; t++)(e = this._temporaryDisplayables[t])
				.parent = this, e.update(), e.parent = null
		}, Lh.prototype.getBoundingRect = function() {
			if (!this._rect) {
				for (var t = new X(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) {
					var n = this._displayables[e],
						i = n.getBoundingRect().clone();
					n.needLocalTransform() && i.applyTransform(n.getLocalTransform(Ah)), t.union(i)
				}
				this._rect = t
			}
			return this._rect
		}, Lh.prototype.contain = function(t, e) {
			var n = this.transformCoordToLocal(t, e);
			if (this.getBoundingRect().contain(n[0], n[1]))
				for (var i = 0; i < this._displayables.length; i++)
					if (this._displayables[i].contain(t, e)) return !0;
			return !1
		}, Lh);

	function Lh() {
		var t = null !== kh && kh.apply(this, arguments) || this;
		return t.notClear = !0, t.incremental = !0, t._displayables = [], t._temporaryDisplayables = [], t._cursor =
			0, t
	}
	var Ph = No();

	function Oh(t, e, n, i, r, o, a) {
		var s, l, u, h, c, p, d = !1,
			f = (D(r) ? (a = o, o = r, r = null) : O(r) && (o = r.cb, a = r.during, d = r.isFrom, l = r.removeOpt,
				r = r.dataIndex), "leave" === t),
			g = (f || e.stopAnimation("leave"), p = t, s = r, l = f ? l || {} : null, i = (g = i) && i
				.getAnimationDelayParams ? i.getAnimationDelayParams(e, r) : null, g && g.ecModel && (u = (u = g
					.ecModel.getUpdatePayload()) && u.animation), p = "update" === p, g && g.isAnimationEnabled() ?
				(c = h = r = void 0, c = l ? (r = R(l.duration, 200), h = R(l.easing, "cubicOut"), 0) : (r = g
					.getShallow(p ? "animationDurationUpdate" : "animationDuration"), h = g.getShallow(p ?
						"animationEasingUpdate" : "animationEasing"), g.getShallow(p ? "animationDelayUpdate" :
						"animationDelay")), D(c = u && (null != u.duration && (r = u.duration), null != u
					.easing && (h = u.easing), null != u.delay) ? u.delay : c) && (c = c(s, i)), {
					duration: (r = D(r) ? r(s) : r) || 0,
					delay: c,
					easing: h
				}) : null);
		g && 0 < g.duration ? (p = {
			duration: g.duration,
			delay: g.delay || 0,
			easing: g.easing,
			done: o,
			force: !!o || !!a,
			setToFinal: !f,
			scope: t,
			during: a
		}, d ? e.animateFrom(n, p) : e.animateTo(n, p)) : (e.stopAnimation(), d || e.attr(n), a && a(1), o &&
		o())
	}

	function Rh(t, e, n, i, r, o) {
		Oh("update", t, e, n, i, r, o)
	}

	function Nh(t, e, n, i, r, o) {
		Oh("enter", t, e, n, i, r, o)
	}

	function Eh(t) {
		if (!t.__zr) return !0;
		for (var e = 0; e < t.animators.length; e++)
			if ("leave" === t.animators[e].scope) return !0;
		return !1
	}

	function zh(t, e, n, i, r, o) {
		Eh(t) || Oh("leave", t, e, n, i, r, o)
	}

	function Bh(t, e, n, i) {
		t.removeTextContent(), t.removeTextGuideLine(), zh(t, {
			style: {
				opacity: 0
			}
		}, e, n, i)
	}

	function Fh(t, e, n) {
		function i() {
			t.parent && t.parent.remove(t)
		}
		t.isGroup ? t.traverse(function(t) {
			t.isGroup || Bh(t, e, n, i)
		}) : Bh(t, e, n, i)
	}

	function Vh(t) {
		Ph(t).oldStyle = t.style
	}
	var Gh = Math.max,
		Hh = Math.min,
		Wh = {};

	function Uh(t) {
		return j.extend(t)
	}
	var Xh = function(t, e) {
		var n, i = du(t, e);

		function r(t) {
			t = n.call(this, t) || this;
			return t.applyTransform = i.applyTransform, t.buildPath = i.buildPath, t
		}
		return u(r, n = hu), r
	};

	function Yh(t, e) {
		return Xh(t, e)
	}

	function qh(t, e) {
		Wh[t] = e
	}

	function Zh(t) {
		if (Wh.hasOwnProperty(t)) return Wh[t]
	}

	function jh(t, e, n, i) {
		t = new hu(du(t, e));
		return n && ("center" === i && (n = $h(n, t.getBoundingRect())), Jh(t, n)), t
	}

	function Kh(t, e, n) {
		var i = new Is({
			style: {
				image: t,
				x: e.x,
				y: e.y,
				width: e.width,
				height: e.height
			},
			onload: function(t) {
				"center" === n && (t = {
					width: t.width,
					height: t.height
				}, i.setStyle($h(e, t)))
			}
		});
		return i
	}

	function $h(t, e) {
		var e = e.width / e.height,
			n = t.height * e,
			e = n <= t.width ? t.height : (n = t.width) / e;
		return {
			x: t.x + t.width / 2 - n / 2,
			y: t.y + t.height / 2 - e / 2,
			width: n,
			height: e
		}
	}

	function Qh(t, e) {
		for (var n = [], i = t.length, r = 0; r < i; r++) {
			var o = t[r];
			n.push(o.getUpdatedPathProxy(!0))
		}
		return (e = new j(e)).createPathProxy(), e.buildPath = function(t) {
			var e;
			pu(t) && (t.appendPath(n), e = t.getContext()) && t.rebuildPath(e, 1)
		}, e
	}

	function Jh(t, e) {
		t.applyTransform && (e = t.getBoundingRect().calculateTransform(e), t.applyTransform(e))
	}

	function tc(t, e) {
		return ks(t, t, {
			lineWidth: e
		}), t
	}
	var ec = Ls;

	function nc(t, e) {
		for (var n = Oe([]); t && t !== e;) Ne(n, t.getLocalTransform(), n), t = t.parent;
		return n
	}

	function ic(t, e, n) {
		return e && !lt(e) && (e = xr.getLocalTransform(e)), ee([], t, e = n ? Fe([], e) : e)
	}

	function rc(t) {
		return !t.isGroup
	}

	function oc(t, e, i) {
		var r, n;

		function o(t) {
			var e = {
				x: t.x,
				y: t.y,
				rotation: t.rotation
			};
			return null != t.shape && (e.shape = P({}, t.shape)), e
		}
		t && e && (n = {}, t.traverse(function(t) {
			rc(t) && t.anid && (n[t.anid] = t)
		}), r = n, e.traverse(function(t) {
			var e, n;
			rc(t) && t.anid && (e = r[t.anid]) && (n = o(t), t.attr(o(e)), Rh(t, n, i, k(t).dataIndex))
		}))
	}

	function ac(t, n) {
		return B(t, function(t) {
			var e = t[0],
				e = Gh(e, n.x),
				t = (e = Hh(e, n.x + n.width), t[1]),
				t = Gh(t, n.y);
			return [e, Hh(t, n.y + n.height)]
		})
	}

	function sc(t, e) {
		var n = Gh(t.x, e.x),
			i = Hh(t.x + t.width, e.x + e.width),
			r = Gh(t.y, e.y),
			t = Hh(t.y + t.height, e.y + e.height);
		if (n <= i && r <= t) return {
			x: n,
			y: r,
			width: i - n,
			height: t - r
		}
	}

	function lc(t, e, n) {
		var e = P({
				rectHover: !0
			}, e),
			i = e.style = {
				strokeNoScale: !0
			};
		if (n = n || {
				x: -1,
				y: -1,
				width: 2,
				height: 2
			}, t) return 0 === t.indexOf("image://") ? (i.image = t.slice(8), z(i, n), new Is(e)) : jh(t.replace(
			"path://", ""), e, n, "center")
	}

	function uc(t, e, n, i, r, o, a, s) {
		var l, n = n - t,
			i = i - e,
			a = a - r,
			s = s - o,
			u = a * i - n * s;
		return !((l = u) <= 1e-6 && -1e-6 <= l || (r = ((l = t - r) * i - n * (t = e - o)) / u) < 0 || 1 < r || (i =
			(l * s - a * t) / u) < 0 || 1 < i)
	}

	function hc(t) {
		var e = t.itemTooltipOption,
			n = t.componentModel,
			i = t.itemName,
			e = V(e) ? {
				formatter: e
			} : e,
			r = n.mainType,
			n = n.componentIndex,
			o = {
				componentType: r,
				name: i,
				$vars: ["name"]
			},
			a = (o[r + "Index"] = n, t.formatterParamsExtra),
			t = (a && E(ct(a), function(t) {
				Bt(o, t) || (o[t] = a[t], o.$vars.push(t))
			}), k(t.el));
		t.componentMainType = r, t.componentIndex = n, t.tooltipConfig = {
			name: i,
			option: z({
				content: i,
				formatterParams: o
			}, e)
		}
	}

	function cc(t, e) {
		var n;
		(n = t.isGroup ? e(t) : n) || t.traverse(e)
	}

	function pc(t, e) {
		if (t)
			if (F(t))
				for (var n = 0; n < t.length; n++) cc(t[n], e);
			else cc(t, e)
	}
	qh("circle", yu), qh("ellipse", xu), qh("sector", zu), qh("ring", Gu), qh("polygon", Yu), qh("polyline", Ku),
		qh("rect", Ns), qh("line", eh), qh("bezierCurve", sh), qh("arc", ch);
	var dc = Object.freeze({
			__proto__: null,
			Arc: ch,
			BezierCurve: sh,
			BoundingRect: X,
			Circle: yu,
			CompoundPath: fh,
			Ellipse: xu,
			Group: Ur,
			Image: Is,
			IncrementalDisplayable: e,
			Line: eh,
			LinearGradient: _h,
			OrientedBoundingRect: Ch,
			Path: j,
			Point: H,
			Polygon: Yu,
			Polyline: Ku,
			RadialGradient: yh,
			Rect: Ns,
			Ring: Gu,
			Sector: zu,
			Text: Vs,
			applyTransform: ic,
			clipPointsByRect: ac,
			clipRectByRect: sc,
			createIcon: lc,
			extendPath: Yh,
			extendShape: Uh,
			getShapeClass: Zh,
			getTransform: nc,
			groupTransition: oc,
			initProps: Nh,
			isElementRemoved: Eh,
			lineLineIntersect: uc,
			linePolygonIntersect: function(t, e, n, i, r) {
				for (var o = 0, a = r[r.length - 1]; o < r.length; o++) {
					var s = r[o];
					if (uc(t, e, n, i, s[0], s[1], a[0], a[1])) return !0;
					a = s
				}
			},
			makeImage: Kh,
			makePath: jh,
			mergePath: Qh,
			registerShape: qh,
			removeElement: zh,
			removeElementWithFadeOut: Fh,
			resizePath: Jh,
			setTooltipConfig: hc,
			subPixelOptimize: ec,
			subPixelOptimizeLine: tc,
			subPixelOptimizeRect: function(t) {
				return As(t.shape, t.shape, t.style), t
			},
			transformDirection: function(t, e, n) {
				var i = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]),
					r = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]),
					i = ic(["left" === t ? -i : "right" === t ? i : 0, "top" === t ? -r : "bottom" === t ?
						r : 0
					], e, n);
				return Math.abs(i[0]) > Math.abs(i[1]) ? 0 < i[0] ? "right" : "left" : 0 < i[1] ? "bottom" :
					"top"
			},
			traverseElements: pc,
			updateProps: Rh
		}),
		fc = {};

	function gc(t, e) {
		for (var n = 0; n < ol.length; n++) {
			var i = ol[n],
				r = e[i],
				i = t.ensureState(i);
			i.style = i.style || {}, i.style.text = r
		}
		var o = t.currentStates.slice();
		t.clearStates(!0), t.setStyle({
			text: e.normal
		}), t.useStates(o, !0)
	}

	function yc(t, e, n) {
		for (var i, r = t.labelFetcher, o = t.labelDataIndex, a = t.labelDimIndex, s = e.normal, l = {
				normal: i = null == (i = r ? r.getFormattedLabel(o, "normal", null, a, s && s.get("formatter"),
					null != n ? {
						interpolatedValue: n
					} : null) : i) ? D(t.defaultText) ? t.defaultText(o, t, n) : t.defaultText : i
			}, u = 0; u < ol.length; u++) {
			var h = ol[u],
				c = e[h];
			l[h] = R(r ? r.getFormattedLabel(o, h, null, a, c && c.get("formatter")) : null, i)
		}
		return l
	}

	function mc(t, e, n, i) {
		n = n || fc;
		for (var r = t instanceof Vs, o = !1, a = 0; a < al.length; a++)
			if ((p = e[al[a]]) && p.getShallow("show")) {
				o = !0;
				break
			} var s = r ? t : t.getTextContent();
		if (o) {
			r || (s || (s = new Vs, t.setTextContent(s)), t.stateProxy && (s.stateProxy = t.stateProxy));
			var l = yc(n, e),
				u = e.normal,
				h = !!u.getShallow("show"),
				c = _c(u, i && i.normal, n, !1, !r);
			c.text = l.normal, r || t.setTextConfig(xc(u, n, !1));
			for (a = 0; a < ol.length; a++) {
				var p, d, f, g = ol[a];
				(p = e[g]) && (d = s.ensureState(g), (f = !!R(p.getShallow("show"), h)) != h && (d.ignore = !f), d
					.style = _c(p, i && i[g], n, !0, !r), d.style.text = l[g], r || (t.ensureState(g).textConfig =
						xc(p, n, !0)))
			}
			s.silent = !!u.getShallow("silent"), null != s.style.x && (c.x = s.style.x), null != s.style.y && (c.y =
				s.style.y), s.ignore = !h, s.useStyle(c), s.dirty(), n.enableTextSetter && (Tc(s).setLabelText =
				function(t) {
					t = yc(n, e, t);
					gc(s, t)
				})
		} else s && (s.ignore = !0);
		t.dirty()
	}

	function vc(t, e) {
		for (var n = {
				normal: t.getModel(e = e || "label")
			}, i = 0; i < ol.length; i++) {
			var r = ol[i];
			n[r] = t.getModel([r, e])
		}
		return n
	}

	function _c(t, e, n, i, r) {
		var o, a = {},
			s = a,
			l = t,
			u = n,
			h = i,
			c = r;
		u = u || fc;
		var p, t = l.ecModel,
			d = t && t.option.textStyle,
			f = function(t) {
				var e;
				for (; t && t !== t.ecModel;) {
					var n = (t.option || fc).rich;
					if (n) {
						e = e || {};
						for (var i = ct(n), r = 0; r < i.length; r++) {
							var o = i[r];
							e[o] = 1
						}
					}
					t = t.parentModel
				}
				return e
			}(l);
		if (f)
			for (var g in p = {}, f) f.hasOwnProperty(g) && (o = l.getModel(["rich", g]), Mc(p[g] = {}, o, d, u, h,
				c, !1, !0));
		return p && (s.rich = p), (t = l.get("overflow")) && (s.overflow = t), null != (t = l.get("minMargin")) && (
			s.margin = t), Mc(s, l, d, u, h, c, !0, !1), e && P(a, e), a
	}

	function xc(t, e, n) {
		e = e || {};
		var i = {},
			r = t.getShallow("rotate"),
			o = R(t.getShallow("distance"), n ? null : 5),
			a = t.getShallow("offset"),
			n = t.getShallow("position") || (n ? null : "inside");
		return null != (n = "outside" === n ? e.defaultOutsidePosition || "top" : n) && (i.position = n), null !=
			a && (i.offset = a), null != r && (r *= Math.PI / 180, i.rotation = r), null != o && (i.distance = o), i
			.outsideFill = "inherit" === t.get("color") ? e.inheritColor || null : "auto", i
	}
	var bc = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur",
			"textShadowOffsetX", "textShadowOffsetY"
		],
		wc = ["align", "lineHeight", "width", "height", "tag", "verticalAlign", "ellipsis"],
		Sc = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor",
			"shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"
		];

	function Mc(t, e, n, i, r, o, a, s) {
		n = !r && n || fc;
		var l = i && i.inheritColor,
			u = e.getShallow("color"),
			h = e.getShallow("textBorderColor"),
			c = R(e.getShallow("opacity"), n.opacity),
			u = ("inherit" !== u && "auto" !== u || (u = l || null), "inherit" !== h && "auto" !== h || (h = l ||
					null), o || (u = u || n.color, h = h || n.textBorderColor), null != u && (t.fill = u), null !=
				h && (t.stroke = h), R(e.getShallow("textBorderWidth"), n.textBorderWidth)),
			h = (null != u && (t.lineWidth = u), R(e.getShallow("textBorderType"), n.textBorderType)),
			u = (null != h && (t.lineDash = h), R(e.getShallow("textBorderDashOffset"), n.textBorderDashOffset));
		null != u && (t.lineDashOffset = u), null != (c = r || null != c || s ? c : i && i.defaultOpacity) && (t
			.opacity = c), r || o || null == t.fill && i.inheritColor && (t.fill = i.inheritColor);
		for (var p = 0; p < bc.length; p++) {
			var d = bc[p];
			null != (f = R(e.getShallow(d), n[d])) && (t[d] = f)
		}
		for (var p = 0; p < wc.length; p++) {
			d = wc[p];
			null != (f = e.getShallow(d)) && (t[d] = f)
		}
		if (null == t.verticalAlign && null != (h = e.getShallow("baseline")) && (t.verticalAlign = h), !a || !i
			.disableBox) {
			for (p = 0; p < Sc.length; p++) {
				var f, d = Sc[p];
				null != (f = e.getShallow(d)) && (t[d] = f)
			}
			u = e.getShallow("borderType");
			null != u && (t.borderDash = u), "auto" !== t.backgroundColor && "inherit" !== t.backgroundColor || !
				l || (t.backgroundColor = l), "auto" !== t.borderColor && "inherit" !== t.borderColor || !l || (t
					.borderColor = l)
		}
	}
	var Tc = No();

	function Ic(n, i, r, t, o) {
		var a, s, l, u = Tc(n);
		u.valueAnimation && u.prevValue !== u.value && (a = u.defaultInterpolatedText, s = R(u.interpolatedValue, u
			.prevValue), l = u.value, n.percent = 0, (null == u.prevValue ? Nh : Rh)(n, {
			percent: 1
		}, t, i, null, function(t) {
			var e = Ho(r, u.precision, s, l, t),
				t = (u.interpolatedValue = 1 === t ? null : e, yc({
					labelDataIndex: i,
					labelFetcher: o,
					defaultText: a ? a(e) : e + ""
				}, u.statesModels, e));
			gc(n, t)
		}))
	}
	var Cc = ["textStyle", "color"],
		Dc = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "padding", "lineHeight", "rich", "width",
			"height", "overflow"
		],
		kc = new Vs,
		ec = (Ac.prototype.getTextColor = function(t) {
			var e = this.ecModel;
			return this.getShallow("color") || (!t && e ? e.get(Cc) : null)
		}, Ac.prototype.getFont = function() {
			return t = {
				fontStyle: this.getShallow("fontStyle"),
				fontWeight: this.getShallow("fontWeight"),
				fontSize: this.getShallow("fontSize"),
				fontFamily: this.getShallow("fontFamily")
			}, e = (e = this.ecModel) && e.getModel("textStyle"), It([t.fontStyle || e && e.getShallow(
					"fontStyle") || "", t.fontWeight || e && e.getShallow("fontWeight") || "", (t
					.fontSize || e && e.getShallow("fontSize") || 12) + "px", t.fontFamily || e && e
				.getShallow("fontFamily") || "sans-serif"
			].join(" "));
			var t, e
		}, Ac.prototype.getTextRect = function(t) {
			for (var e = {
					text: t,
					verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline")
				}, n = 0; n < Dc.length; n++) e[Dc[n]] = this.getShallow(Dc[n]);
			return kc.useStyle(e), kc.update(), kc.getBoundingRect()
		}, Ac);

	function Ac() {}
	var Lc = [
			["lineWidth", "width"],
			["stroke", "color"],
			["opacity"],
			["shadowBlur"],
			["shadowOffsetX"],
			["shadowOffsetY"],
			["shadowColor"],
			["lineDash", "type"],
			["lineDashOffset", "dashOffset"],
			["lineCap", "cap"],
			["lineJoin", "join"],
			["miterLimit"]
		],
		Pc = Jo(Lc),
		Oc = (Rc.prototype.getLineStyle = function(t) {
			return Pc(this, t)
		}, Rc);

	function Rc() {}
	var Nc = [
			["fill", "color"],
			["stroke", "borderColor"],
			["lineWidth", "borderWidth"],
			["opacity"],
			["shadowBlur"],
			["shadowOffsetX"],
			["shadowOffsetY"],
			["shadowColor"],
			["lineDash", "borderType"],
			["lineDashOffset", "borderDashOffset"],
			["lineCap", "borderCap"],
			["lineJoin", "borderJoin"],
			["miterLimit", "borderMiterLimit"]
		],
		Ec = Jo(Nc),
		zc = (Bc.prototype.getItemStyle = function(t, e) {
			return Ec(this, t, e)
		}, Bc);

	function Bc() {}
	Gc.prototype.init = function(t, e, n) {}, Gc.prototype.mergeOption = function(t, e) {
		d(this.option, t, !0)
	}, Gc.prototype.get = function(t, e) {
		return null == t ? this.option : this._doGet(this.parsePath(t), !e && this.parentModel)
	}, Gc.prototype.getShallow = function(t, e) {
		var n = this.option,
			n = null == n ? n : n[t];
		return null != n || e || (e = this.parentModel) && (n = e.getShallow(t)), n
	}, Gc.prototype.getModel = function(t, e) {
		var n = null != t,
			t = n ? this.parsePath(t) : null;
		return new Gc(n ? this._doGet(t) : this.option, e = e || this.parentModel && this.parentModel.getModel(
			this.resolveParentPath(t)), this.ecModel)
	}, Gc.prototype.isEmpty = function() {
		return null == this.option
	}, Gc.prototype.restoreData = function() {}, Gc.prototype.clone = function() {
		return new this.constructor(y(this.option))
	}, Gc.prototype.parsePath = function(t) {
		return "string" == typeof t ? t.split(".") : t
	}, Gc.prototype.resolveParentPath = function(t) {
		return t
	}, Gc.prototype.isAnimationEnabled = function() {
		if (!w.node && this.option) return null != this.option.animation ? !!this.option.animation : this
			.parentModel ? this.parentModel.isAnimationEnabled() : void 0
	}, Gc.prototype._doGet = function(t, e) {
		var n = this.option;
		if (t) {
			for (var i = 0; i < t.length && (!t[i] || null != (n = n && "object" == typeof n ? n[t[i]] :
				null)); i++);
			null == n && e && (n = e._doGet(this.resolveParentPath(t), e.parentModel))
		}
		return n
	};
	var Fc, Vc = Gc;

	function Gc(t, e, n) {
		this.parentModel = e, this.ecModel = n, this.option = t
	}
	qo(Vc), ip = Vc, Fc = ["__\0is_clz", jo++].join("_"), ip.prototype[Fc] = !0, ip.isInstance = function(t) {
		return !(!t || !t[Fc])
	}, st(Vc, Oc), st(Vc, zc), st(Vc, ea), st(Vc, ec);
	var Hc = Math.round(10 * Math.random());

	function Wc(t) {
		return [t || "", Hc++].join("_")
	}

	function Uc(t, e) {
		return d(d({}, t, !0), e, !0)
	}
	var Xc = "ZH",
		Yc = "EN",
		qc = Yc,
		Zc = {},
		jc = {},
		Kc = w.domSupported && -1 < (document.documentElement.lang || navigator.language || navigator
			.browserLanguage || qc).toUpperCase().indexOf(Xc) ? Xc : qc;

	function $c(t, e) {
		t = t.toUpperCase(), jc[t] = new Vc(e), Zc[t] = e
	}
	$c(Yc, {
		time: {
			month: ["January", "February", "March", "April", "May", "June", "July", "August", "September",
				"October", "November", "December"
			],
			monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
			dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
			dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
		},
		legend: {
			selector: {
				all: "All",
				inverse: "Inv"
			}
		},
		toolbox: {
			brush: {
				title: {
					rect: "Box Select",
					polygon: "Lasso Select",
					lineX: "Horizontally Select",
					lineY: "Vertically Select",
					keep: "Keep Selections",
					clear: "Clear Selections"
				}
			},
			dataView: {
				title: "Data View",
				lang: ["Data View", "Close", "Refresh"]
			},
			dataZoom: {
				title: {
					zoom: "Zoom",
					back: "Zoom Reset"
				}
			},
			magicType: {
				title: {
					line: "Switch to Line Chart",
					bar: "Switch to Bar Chart",
					stack: "Stack",
					tiled: "Tile"
				}
			},
			restore: {
				title: "Restore"
			},
			saveAsImage: {
				title: "Save as Image",
				lang: ["Right Click to Save Image"]
			}
		},
		series: {
			typeNames: {
				pie: "Pie chart",
				bar: "Bar chart",
				line: "Line chart",
				scatter: "Scatter plot",
				effectScatter: "Ripple scatter plot",
				radar: "Radar chart",
				tree: "Tree",
				treemap: "Treemap",
				boxplot: "Boxplot",
				candlestick: "Candlestick",
				k: "K line chart",
				heatmap: "Heat map",
				map: "Map",
				parallel: "Parallel coordinate map",
				lines: "Line graph",
				graph: "Relationship graph",
				sankey: "Sankey diagram",
				funnel: "Funnel chart",
				gauge: "Gauge",
				pictorialBar: "Pictorial bar",
				themeRiver: "Theme River Map",
				sunburst: "Sunburst",
				custom: "Custom chart",
				chart: "Chart"
			}
		},
		aria: {
			general: {
				withTitle: 'This is a chart about "{title}"',
				withoutTitle: "This is a chart"
			},
			series: {
				single: {
					prefix: "",
					withName: " with type {seriesType} named {seriesName}.",
					withoutName: " with type {seriesType}."
				},
				multiple: {
					prefix: ". It consists of {seriesCount} series count.",
					withName: " The {seriesId} series is a {seriesType} representing {seriesName}.",
					withoutName: " The {seriesId} series is a {seriesType}.",
					separator: {
						middle: "",
						end: ""
					}
				}
			},
			data: {
				allData: "The data is as follows: ",
				partialData: "The first {displayCnt} items are: ",
				withName: "the data for {name} is {value}",
				withoutName: "{value}",
				separator: {
					middle: ", ",
					end: ". "
				}
			}
		}
	}), $c(Xc, {
		time: {
			month: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
			monthAbbr: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
			dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
			dayOfWeekAbbr: ["日", "一", "二", "三", "四", "五", "六"]
		},
		legend: {
			selector: {
				all: "全选",
				inverse: "反选"
			}
		},
		toolbox: {
			brush: {
				title: {
					rect: "矩形选择",
					polygon: "圈选",
					lineX: "横向选择",
					lineY: "纵向选择",
					keep: "保持选择",
					clear: "清除选择"
				}
			},
			dataView: {
				title: "数据视图",
				lang: ["数据视图", "关闭", "刷新"]
			},
			dataZoom: {
				title: {
					zoom: "区域缩放",
					back: "区域缩放还原"
				}
			},
			magicType: {
				title: {
					line: "切换为折线图",
					bar: "切换为柱状图",
					stack: "切换为堆叠",
					tiled: "切换为平铺"
				}
			},
			restore: {
				title: "还原"
			},
			saveAsImage: {
				title: "保存为图片",
				lang: ["右键另存为图片"]
			}
		},
		series: {
			typeNames: {
				pie: "饼图",
				bar: "柱状图",
				line: "折线图",
				scatter: "散点图",
				effectScatter: "涟漪散点图",
				radar: "雷达图",
				tree: "树图",
				treemap: "矩形树图",
				boxplot: "箱型图",
				candlestick: "K线图",
				k: "K线图",
				heatmap: "热力图",
				map: "地图",
				parallel: "平行坐标图",
				lines: "线图",
				graph: "关系图",
				sankey: "桑基图",
				funnel: "漏斗图",
				gauge: "仪表盘图",
				pictorialBar: "象形柱图",
				themeRiver: "主题河流图",
				sunburst: "旭日图",
				custom: "自定义图表",
				chart: "图表"
			}
		},
		aria: {
			general: {
				withTitle: "这是一个关于“{title}”的图表。",
				withoutTitle: "这是一个图表，"
			},
			series: {
				single: {
					prefix: "",
					withName: "图表类型是{seriesType}，表示{seriesName}。",
					withoutName: "图表类型是{seriesType}。"
				},
				multiple: {
					prefix: "它由{seriesCount}个图表系列组成。",
					withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType}，",
					withoutName: "第{seriesId}个系列是一个{seriesType}，",
					separator: {
						middle: "；",
						end: "。"
					}
				}
			},
			data: {
				allData: "其数据是——",
				partialData: "其中，前{displayCnt}项是——",
				withName: "{name}的数据是{value}",
				withoutName: "{value}",
				separator: {
					middle: "，",
					end: ""
				}
			}
		}
	});
	var Qc = 1e3,
		Jc = 60 * Qc,
		tp = 60 * Jc,
		ep = 24 * tp,
		jo = 365 * ep,
		np = {
			year: "{yyyy}",
			month: "{MMM}",
			day: "{d}",
			hour: "{HH}:{mm}",
			minute: "{HH}:{mm}",
			second: "{HH}:{mm}:{ss}",
			millisecond: "{HH}:{mm}:{ss} {SSS}",
			none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"
		},
		ip = "{yyyy}-{MM}-{dd}",
		rp = {
			year: "{yyyy}",
			month: "{yyyy}-{MM}",
			day: ip,
			hour: ip + " " + np.hour,
			minute: ip + " " + np.minute,
			second: ip + " " + np.second,
			millisecond: np.none
		},
		op = ["year", "month", "day", "hour", "minute", "second", "millisecond"],
		ap = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day",
			"hour", "minute", "second", "millisecond"
		];

	function sp(t, e) {
		return "0000".substr(0, e - (t += "").length) + t
	}

	function lp(t) {
		switch (t) {
			case "half-year":
			case "quarter":
				return "month";
			case "week":
			case "half-week":
				return "day";
			case "half-day":
			case "quarter-day":
				return "hour";
			default:
				return t
		}
	}

	function up(t, e, n, i) {
		var t = po(t),
			r = t[pp(n)](),
			o = t[dp(n)]() + 1,
			a = Math.floor((o - 1) / 3) + 1,
			s = t[fp(n)](),
			l = t["get" + (n ? "UTC" : "") + "Day"](),
			u = t[gp(n)](),
			h = (u - 1) % 12 + 1,
			c = t[yp(n)](),
			p = t[mp(n)](),
			t = t[vp(n)](),
			n = (i instanceof Vc ? i : jc[i || Kc] || jc[qc]).getModel("time"),
			i = n.get("month"),
			d = n.get("monthAbbr"),
			f = n.get("dayOfWeek"),
			n = n.get("dayOfWeekAbbr");
		return (e || "").replace(/{yyyy}/g, r + "").replace(/{yy}/g, sp(r % 100 + "", 2)).replace(/{Q}/g, a + "")
			.replace(/{MMMM}/g, i[o - 1]).replace(/{MMM}/g, d[o - 1]).replace(/{MM}/g, sp(o, 2)).replace(/{M}/g, o +
				"").replace(/{dd}/g, sp(s, 2)).replace(/{d}/g, s + "").replace(/{eeee}/g, f[l]).replace(/{ee}/g, n[
				l]).replace(/{e}/g, l + "").replace(/{HH}/g, sp(u, 2)).replace(/{H}/g, u + "").replace(/{hh}/g, sp(
				h + "", 2)).replace(/{h}/g, h + "").replace(/{mm}/g, sp(c, 2)).replace(/{m}/g, c + "").replace(
				/{ss}/g, sp(p, 2)).replace(/{s}/g, p + "").replace(/{SSS}/g, sp(t, 3)).replace(/{S}/g, t + "")
	}

	function hp(t, e) {
		var t = po(t),
			n = t[dp(e)]() + 1,
			i = t[fp(e)](),
			r = t[gp(e)](),
			o = t[yp(e)](),
			a = t[mp(e)](),
			t = 0 === t[vp(e)](),
			e = t && 0 === a,
			a = e && 0 === o,
			o = a && 0 === r,
			r = o && 1 === i;
		return r && 1 === n ? "year" : r ? "month" : o ? "day" : a ? "hour" : e ? "minute" : t ? "second" :
			"millisecond"
	}

	function cp(t, e, n) {
		var i = G(t) ? po(t) : t;
		switch (e = e || hp(t, n)) {
			case "year":
				return i[pp(n)]();
			case "half-year":
				return 6 <= i[dp(n)]() ? 1 : 0;
			case "quarter":
				return Math.floor((i[dp(n)]() + 1) / 4);
			case "month":
				return i[dp(n)]();
			case "day":
				return i[fp(n)]();
			case "half-day":
				return i[gp(n)]() / 24;
			case "hour":
				return i[gp(n)]();
			case "minute":
				return i[yp(n)]();
			case "second":
				return i[mp(n)]();
			case "millisecond":
				return i[vp(n)]()
		}
	}

	function pp(t) {
		return t ? "getUTCFullYear" : "getFullYear"
	}

	function dp(t) {
		return t ? "getUTCMonth" : "getMonth"
	}

	function fp(t) {
		return t ? "getUTCDate" : "getDate"
	}

	function gp(t) {
		return t ? "getUTCHours" : "getHours"
	}

	function yp(t) {
		return t ? "getUTCMinutes" : "getMinutes"
	}

	function mp(t) {
		return t ? "getUTCSeconds" : "getSeconds"
	}

	function vp(t) {
		return t ? "getUTCMilliseconds" : "getMilliseconds"
	}

	function _p(t) {
		return t ? "setUTCMonth" : "setMonth"
	}

	function xp(t) {
		return t ? "setUTCDate" : "setDate"
	}

	function bp(t) {
		return t ? "setUTCHours" : "setHours"
	}

	function wp(t) {
		return t ? "setUTCMinutes" : "setMinutes"
	}

	function Sp(t) {
		return t ? "setUTCSeconds" : "setSeconds"
	}

	function Mp(t) {
		return t ? "setUTCMilliseconds" : "setMilliseconds"
	}

	function Tp(t) {
		var e;
		return vo(t) ? (e = (t + "").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (1 < e
			.length ? "." + e[1] : "") : V(t) ? t : "-"
	}

	function Ip(t, e) {
		return t = (t || "").toLowerCase().replace(/-(.)/g, function(t, e) {
			return e.toUpperCase()
		}), t = e ? t && t.charAt(0).toUpperCase() + t.slice(1) : t
	}
	var Cp = Mt;

	function Dp(t, e, n) {
		function i(t) {
			return t && It(t) ? t : "-"
		}

		function r(t) {
			return null != t && !isNaN(t) && isFinite(t)
		}
		var o = "time" === e,
			a = t instanceof Date;
		if (o || a) {
			var o = o ? po(t) : t;
			if (!isNaN(+o)) return up(o, "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}", n);
			if (a) return "-"
		}
		return "ordinal" === e ? dt(t) ? i(t) : G(t) && r(t) ? t + "" : "-" : r(o = mo(t)) ? Tp(o) : dt(t) ? i(t) :
			"boolean" == typeof t ? t + "" : "-"
	}

	function kp(t, e) {
		return "{" + t + (null == e ? "" : e) + "}"
	}
	var Ap = ["a", "b", "c", "d", "e", "f", "g"];

	function Lp(t, e, n) {
		var i = (e = F(e) ? e : [e]).length;
		if (!i) return "";
		for (var r = e[0].$vars || [], o = 0; o < r.length; o++) {
			var a = Ap[o];
			t = t.replace(kp(a), kp(a, 0))
		}
		for (var s = 0; s < i; s++)
			for (var l = 0; l < r.length; l++) {
				var u = e[s][r[l]];
				t = t.replace(kp(Ap[l], s), n ? _e(u) : u)
			}
		return t
	}

	function Pp(t, e) {
		var t = V(t) ? {
				color: t,
				extraCssText: e
			} : t || {},
			n = t.color,
			i = t.type,
			r = (e = t.extraCssText, t.renderMode || "html");
		return n ? "html" === r ? "subItem" === i ?
			'<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' +
			_e(n) + ";" + (e || "") + '"></span>' :
			'<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:' +
			_e(n) + ";" + (e || "") + '"></span>' : {
				renderMode: r,
				content: "{" + (t.markerId || "markerX") + "|}  ",
				style: "subItem" === i ? {
					width: 4,
					height: 4,
					borderRadius: 2,
					backgroundColor: n
				} : {
					width: 10,
					height: 10,
					borderRadius: 5,
					backgroundColor: n
				}
			} : ""
	}

	function Op(t, e) {
		return e = e || "transparent", V(t) ? t : O(t) && t.colorStops && (t.colorStops[0] || {}).color || e
	}

	function Rp(t, e) {
		var n;
		"_blank" === e || "blank" === e ? ((n = window.open()).opener = null, n.location.href = t) : window.open(t,
			e)
	}
	var Np = E,
		Ep = ["left", "right", "top", "bottom", "width", "height"],
		zp = [
			["width", "left", "right"],
			["height", "top", "bottom"]
		];

	function Bp(a, s, l, u, h) {
		var c = 0,
			p = 0,
			d = (null == u && (u = 1 / 0), null == h && (h = 1 / 0), 0);
		s.eachChild(function(t, e) {
			var n, i, r, o = t.getBoundingRect(),
				e = s.childAt(e + 1),
				e = e && e.getBoundingRect();
			d = "horizontal" === a ? (i = o.width + (e ? -e.x + o.x : 0), u < (n = c + i) || t.newline ? (
				c = 0, n = i, p += d + l, o.height) : Math.max(d, o.height)) : (i = o.height + (e ? -e
					.y + o.y : 0), h < (r = p + i) || t.newline ? (c += d + l, p = 0, r = i, o.width) :
				Math.max(d, o.width)), t.newline || (t.x = c, t.y = p, t.markRedraw(), "horizontal" ===
				a ? c = n + l : p = r + l)
		})
	}
	var Fp = Bp;

	function Vp(t, e, n) {
		n = Cp(n || 0);
		var i = e.width,
			r = e.height,
			o = W(t.left, i),
			a = W(t.top, r),
			e = W(t.right, i),
			s = W(t.bottom, r),
			l = W(t.width, i),
			u = W(t.height, r),
			h = n[2] + n[0],
			c = n[1] + n[3],
			p = t.aspect;
		switch (isNaN(l) && (l = i - e - c - o), isNaN(u) && (u = r - s - h - a), null != p && (isNaN(l) && isNaN(
				u) && (i / r < p ? l = .8 * i : u = .8 * r), isNaN(l) && (l = p * u), isNaN(u)) && (u = l / p),
			isNaN(o) && (o = i - e - l - c), isNaN(a) && (a = r - s - u - h), t.left || t.right) {
			case "center":
				o = i / 2 - l / 2 - n[3];
				break;
			case "right":
				o = i - l - c
		}
		switch (t.top || t.bottom) {
			case "middle":
			case "center":
				a = r / 2 - u / 2 - n[0];
				break;
			case "bottom":
				a = r - u - h
		}
		o = o || 0, a = a || 0, isNaN(l) && (l = i - c - o - (e || 0)), isNaN(u) && (u = r - h - a - (s || 0));
		p = new X(o + n[3], a + n[0], l, u);
		return p.margin = n, p
	}

	function Gp(t) {
		t = t.layoutMode || t.constructor.layoutMode;
		return O(t) ? t : t ? {
			type: t
		} : null
	}

	function Hp(l, u, t) {
		var h = t && t.ignoreSize,
			t = (F(h) || (h = [h, h]), n(zp[0], 0)),
			e = n(zp[1], 1);

		function n(t, e) {
			var n = {},
				i = 0,
				r = {},
				o = 0;
			if (Np(t, function(t) {
					r[t] = l[t]
				}), Np(t, function(t) {
					c(u, t) && (n[t] = r[t] = u[t]), p(n, t) && i++, p(r, t) && o++
				}), h[e]) p(u, t[1]) ? r[t[2]] = null : p(u, t[2]) && (r[t[1]] = null);
			else if (2 !== o && i) {
				if (!(2 <= i))
					for (var a = 0; a < t.length; a++) {
						var s = t[a];
						if (!c(n, s) && c(l, s)) {
							n[s] = l[s];
							break
						}
					}
				return n
			}
			return r
		}

		function c(t, e) {
			return t.hasOwnProperty(e)
		}

		function p(t, e) {
			return null != t[e] && "auto" !== t[e]
		}

		function i(t, e, n) {
			Np(t, function(t) {
				e[t] = n[t]
			})
		}
		i(zp[0], l, t), i(zp[1], l, e)
	}

	function Wp(t) {
		return e = {}, (n = t) && e && Np(Ep, function(t) {
			n.hasOwnProperty(t) && (e[t] = n[t])
		}), e;
		var e, n
	}
	S(Bp, "vertical"), S(Bp, "horizontal");
	var Up, Xp, Yp, qp, Zp = No(),
		g = (u(jp, Up = Vc), jp.prototype.init = function(t, e, n) {
			this.mergeDefaultAndTheme(t, n)
		}, jp.prototype.mergeDefaultAndTheme = function(t, e) {
			var n = Gp(this),
				i = n ? Wp(t) : {};
			d(t, e.getTheme().get(this.mainType)), d(t, this.getDefaultOption()), n && Hp(t, i, n)
		}, jp.prototype.mergeOption = function(t, e) {
			d(this.option, t, !0);
			var n = Gp(this);
			n && Hp(this.option, t, n)
		}, jp.prototype.optionUpdated = function(t, e) {}, jp.prototype.getDefaultOption = function() {
			var t = this.constructor;
			if (!(e = t) || !e[Xo]) return t.defaultOption;
			var e = Zp(this);
			if (!e.defaultOption) {
				for (var n = [], i = t; i;) {
					var r = i.prototype.defaultOption;
					r && n.push(r), i = i.superClass
				}
				for (var o = {}, a = n.length - 1; 0 <= a; a--) o = d(o, n[a], !0);
				e.defaultOption = o
			}
			return e.defaultOption
		}, jp.prototype.getReferringComponents = function(t, e) {
			var n = t + "Id";
			return Vo(this.ecModel, t, {
				index: this.get(t + "Index", !0),
				id: this.get(n, !0)
			}, e)
		}, jp.prototype.getBoxLayoutParams = function() {
			return {
				left: this.get("left"),
				top: this.get("top"),
				right: this.get("right"),
				bottom: this.get("bottom"),
				width: this.get("width"),
				height: this.get("height")
			}
		}, jp.prototype.getZLevelKey = function() {
			return ""
		}, jp.prototype.setZLevel = function(t) {
			this.option.zlevel = t
		}, jp.protoInitialize = ((Oc = jp.prototype).type = "component", Oc.id = "", Oc.name = "", Oc.mainType =
			"", Oc.subType = "", void(Oc.componentIndex = 0)), jp);

	function jp(t, e, n) {
		t = Up.call(this, t, e, n) || this;
		return t.uid = Wc("ec_cpt_model"), t
	}

	function Kp(t, e) {
		return t[e] || (t[e] = {
			predecessor: [],
			successor: []
		}), t[e]
	}
	Zo(g, Vc), Qo(g), Yp = {}, (Xp = g).registerSubTypeDefaulter = function(t, e) {
		t = Yo(t);
		Yp[t.main] = e
	}, Xp.determineSubType = function(t, e) {
		var n, i = e.type;
		return i || (n = Yo(t).main, Xp.hasSubTypes(t) && Yp[n] && (i = Yp[n](e))), i
	}, qp = function(t) {
		var e = [];
		E(g.getClassesByMainType(t), function(t) {
			e = e.concat(t.dependencies || t.prototype.dependencies || [])
		}), e = B(e, function(t) {
			return Yo(t).main
		}), "dataset" !== t && C(e, "dataset") <= 0 && e.unshift("dataset");
		return e
	}, g.topologicalTravel = function(t, e, n, i) {
		if (t.length) {
			a = {}, s = [], E(o = e, function(n) {
				var e, i, r = Kp(a, n),
					t = r.originalDeps = qp(n),
					t = (e = o, i = [], E(t, function(t) {
						0 <= C(e, t) && i.push(t)
					}), i);
				r.entryCount = t.length, 0 === r.entryCount && s.push(n), E(t, function(t) {
					C(r.predecessor, t) < 0 && r.predecessor.push(t);
					var e = Kp(a, t);
					C(e.successor, t) < 0 && e.successor.push(n)
				})
			});
			var o, a, s, e = {
					graph: a,
					noEntryList: s
				},
				r = e.graph,
				l = e.noEntryList,
				u = {};
			for (E(t, function(t) {
					u[t] = !0
				}); l.length;) {
				var h = l.pop(),
					c = r[h],
					p = !!u[h];
				p && (n.call(i, h, c.originalDeps.slice()), delete u[h]), E(c.successor, p ? f : d)
			}
			E(u, function() {
				throw new Error("")
			})
		}

		function d(t) {
			r[t].entryCount--, 0 === r[t].entryCount && l.push(t)
		}

		function f(t) {
			u[t] = !0, d(t)
		}
	};
	var zc = "",
		ea = ("undefined" != typeof navigator && (zc = navigator.platform || ""), "rgba(0, 0, 0, 0.2)"),
		$p = {
			darkMode: "auto",
			colorBy: "series",
			color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4",
				"#ea7ccc"
			],
			gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
			aria: {
				decal: {
					decals: [{
						color: ea,
						dashArrayX: [1, 0],
						dashArrayY: [2, 5],
						symbolSize: 1,
						rotation: Math.PI / 6
					}, {
						color: ea,
						symbol: "circle",
						dashArrayX: [
							[8, 8],
							[0, 8, 8, 0]
						],
						dashArrayY: [6, 0],
						symbolSize: .8
					}, {
						color: ea,
						dashArrayX: [1, 0],
						dashArrayY: [4, 3],
						rotation: -Math.PI / 4
					}, {
						color: ea,
						dashArrayX: [
							[6, 6],
							[0, 6, 6, 0]
						],
						dashArrayY: [6, 0]
					}, {
						color: ea,
						dashArrayX: [
							[1, 0],
							[1, 6]
						],
						dashArrayY: [1, 0, 6, 0],
						rotation: Math.PI / 4
					}, {
						color: ea,
						symbol: "triangle",
						dashArrayX: [
							[9, 9],
							[0, 9, 9, 0]
						],
						dashArrayY: [7, 2],
						symbolSize: .75
					}]
				}
			},
			textStyle: {
				fontFamily: zc.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
				fontSize: 12,
				fontStyle: "normal",
				fontWeight: "normal"
			},
			blendMode: null,
			stateAnimation: {
				duration: 300,
				easing: "cubicOut"
			},
			animation: "auto",
			animationDuration: 1e3,
			animationDurationUpdate: 500,
			animationEasing: "cubicInOut",
			animationEasingUpdate: "cubicInOut",
			animationThreshold: 2e3,
			progressiveThreshold: 3e3,
			progressive: 400,
			hoverLayerThreshold: 3e3,
			useUTC: !1
		},
		Qp = N(["tooltip", "label", "itemName", "itemId", "itemGroupId", "itemChildGroupId", "seriesName"]),
		Jp = "original",
		td = "arrayRows",
		ed = "objectRows",
		nd = "keyedColumns",
		id = "typedArray",
		rd = "unknown",
		od = "column",
		ad = "row",
		sd = {
			Must: 1,
			Might: 2,
			Not: 3
		},
		ld = No();

	function ud(n, t, e) {
		var r, o, a, i, s, l = {},
			u = cd(t);
		return u && n && (r = [], o = [], t = t.ecModel, t = ld(t).datasetMap, u = u.uid + "_" + e.seriesLayoutBy,
			E(n = n.slice(), function(t, e) {
				t = O(t) ? t : n[e] = {
					name: t
				};
				"ordinal" === t.type && null == a && (a = e, i = c(t)), l[t.name] = []
			}), s = t.get(u) || t.set(u, {
				categoryWayDim: i,
				valueWayDim: 0
			}), E(n, function(t, e) {
				var n, i = t.name,
					t = c(t);
				null == a ? (n = s.valueWayDim, h(l[i], n, t), h(o, n, t), s.valueWayDim += t) : a === e ? (
					h(l[i], 0, t), h(r, 0, t)) : (n = s.categoryWayDim, h(l[i], n, t), h(o, n, t), s
					.categoryWayDim += t)
			}), r.length && (l.itemName = r), o.length) && (l.seriesName = o), l;

		function h(t, e, n) {
			for (var i = 0; i < n; i++) t.push(e + i)
		}

		function c(t) {
			t = t.dimsDef;
			return t ? t.length : 1
		}
	}

	function hd(t, l, u) {
		var h, c, p, e = {};
		return cd(t) && (h = l.sourceFormat, c = l.dimensionsDefine, h !== ed && h !== nd || E(c, function(t, e) {
			"name" === (O(t) ? t.name : t) && (p = e)
		}), t = function() {
			for (var t = {}, e = {}, n = [], i = 0, r = Math.min(5, u); i < r; i++) {
				var o = dd(l.data, h, l.seriesLayoutBy, c, l.startIndex, i),
					a = (n.push(o), o === sd.Not);
				if (a && null == t.v && i !== p && (t.v = i), null != t.n && t.n !== t.v && (a || n[t.n] !==
						sd.Not) || (t.n = i), s(t) && n[t.n] !== sd.Not) return t;
				a || (o === sd.Might && null == e.v && i !== p && (e.v = i), null != e.n && e.n !== e.v) ||
					(e.n = i)
			}

			function s(t) {
				return null != t.v && null != t.n
			}
			return s(t) ? t : s(e) ? e : null
		}()) && (e.value = [t.v], t = null != p ? p : t.n, e.itemName = [t], e.seriesName = [t]), e
	}

	function cd(t) {
		if (!t.get("data", !0)) return Vo(t.ecModel, "dataset", {
			index: t.get("datasetIndex", !0),
			id: t.get("datasetId", !0)
		}, Fo).models[0]
	}

	function pd(t, e) {
		return dd(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e)
	}

	function dd(t, e, n, i, r, o) {
		var a, s, l;
		if (!gt(t)) {
			if (i && (O(i = i[o]) ? (s = i.name, l = i.type) : V(i) && (s = i)), null != l) return "ordinal" === l ?
				sd.Must : sd.Not;
			if (e === td) {
				var u = t;
				if (n === ad) {
					for (var h = u[o], c = 0; c < (h || []).length && c < 5; c++)
						if (null != (a = m(h[r + c]))) return a
				} else
					for (c = 0; c < u.length && c < 5; c++) {
						var p = u[r + c];
						if (p && null != (a = m(p[o]))) return a
					}
			} else if (e === ed) {
				var d = t;
				if (!s) return sd.Not;
				for (c = 0; c < d.length && c < 5; c++)
					if ((g = d[c]) && null != (a = m(g[s]))) return a
			} else if (e === nd) {
				if (!s) return sd.Not;
				if (!(h = t[s]) || gt(h)) return sd.Not;
				for (c = 0; c < h.length && c < 5; c++)
					if (null != (a = m(h[c]))) return a
			} else if (e === Jp)
				for (var f = t, c = 0; c < f.length && c < 5; c++) {
					var g, y = Io(g = f[c]);
					if (!F(y)) return sd.Not;
					if (null != (a = m(y[o]))) return a
				}
		}
		return sd.Not;

		function m(t) {
			var e = V(t);
			return null != t && isFinite(t) && "" !== t ? e ? sd.Might : sd.Not : e && "-" !== t ? sd.Must : void 0
		}
	}
	var fd = N();
	var gd, yd, md, vd = No(),
		_d = (No(), xd.prototype.getColorFromPalette = function(t, e, n) {
			var i = So(this.get("color", !0)),
				r = this.get("colorLayer", !0),
				o = this,
				a = vd;
			return a = a(e = e || o), o = a.paletteIdx || 0, (e = a.paletteNameMap = a.paletteNameMap || {})
				.hasOwnProperty(t) ? e[t] : (r = (r = n == null || !r ? i : bd(r, n)) || i) && r.length ? (n =
					r[o], t && (e[t] = n), a.paletteIdx = (o + 1) % r.length, n) : void 0
		}, xd.prototype.clearColorPalette = function() {
			var t, e;
			(e = vd)(t = this).paletteIdx = 0, e(t).paletteNameMap = {}
		}, xd);

	function xd() {}

	function bd(t, e) {
		for (var n = t.length, i = 0; i < n; i++)
			if (t[i].length > e) return t[i];
		return t[n - 1]
	}
	var wd, Sd = "\0_ec_inner",
		Md = (u(o, wd = Vc), o.prototype.init = function(t, e, n, i, r, o) {
			i = i || {}, this.option = null, this._theme = new Vc(i), this._locale = new Vc(r), this
				._optionManager = o
		}, o.prototype.setOption = function(t, e, n) {
			e = Cd(e);
			this._optionManager.setOption(t, n, e), this._resetOption(null, e)
		}, o.prototype.resetOption = function(t, e) {
			return this._resetOption(t, Cd(e))
		}, o.prototype._resetOption = function(t, e) {
			var n, i = !1,
				r = this._optionManager;
			return t && "recreate" !== t || (n = r.mountOption("recreate" === t), this.option && "recreate" !==
					t ? (this.restoreData(), this._mergeOption(n, e)) : md(this, n), i = !0), "timeline" !==
				t && "media" !== t || this.restoreData(), t && "recreate" !== t && "timeline" !== t || (n = r
					.getTimelineOption(this)) && (i = !0, this._mergeOption(n, e)), t && "recreate" !== t &&
				"media" !== t || (n = r.getMediaOption(this)).length && E(n, function(t) {
					i = !0, this._mergeOption(t, e)
				}, this), i
		}, o.prototype.mergeOption = function(t) {
			this._mergeOption(t, null)
		}, o.prototype._mergeOption = function(i, t) {
			var r = this.option,
				h = this._componentsMap,
				c = this._componentsCount,
				n = [],
				o = N(),
				p = t && t.replaceMergeMainTypeMap;
			ld(this).datasetMap = N(), E(i, function(t, e) {
				null != t && (g.hasClass(e) ? e && (n.push(e), o.set(e, !0)) : r[e] = null == r[e] ? y(
					t) : d(r[e], t, !0))
			}), p && p.each(function(t, e) {
				g.hasClass(e) && !o.get(e) && (n.push(e), o.set(e, !0))
			}), g.topologicalTravel(n, g.getAllClassMainTypes(), function(o) {
				var a, t = function(t, e, n) {
						return (e = (e = fd.get(e)) && e(t)) ? n.concat(e) : n
					}(this, o, So(i[o])),
					e = h.get(o),
					n = e ? p && p.get(o) ? "replaceMerge" : "normalMerge" : "replaceAll",
					e = Co(e, t, n),
					s = (Oo(e, o, g), r[o] = null, h.set(o, null), c.set(o, 0), []),
					l = [],
					u = 0;
				E(e, function(t, e) {
					var n = t.existing,
						i = t.newOption;
					if (i) {
						var r = g.getClass(o, t.keyInfo.subType, !("series" === o));
						if (!r) return;
						if ("tooltip" === o) {
							if (a) return;
							a = !0
						}
						n && n.constructor === r ? (n.name = t.keyInfo.name, n.mergeOption(i,
							this), n.optionUpdated(i, !1)) : (e = P({
								componentIndex: e
							}, t.keyInfo), P(n = new r(i, this, this, e), e), t.brandNew &&
							(n.__requireNewView = !0), n.init(i, this, this), n
							.optionUpdated(null, !0))
					} else n && (n.mergeOption({}, this), n.optionUpdated({}, !1));
					n ? (s.push(n.option), l.push(n), u++) : (s.push(void 0), l.push(void 0))
				}, this), r[o] = s, h.set(o, l), c.set(o, u), "series" === o && gd(this)
			}, this), this._seriesIndices || gd(this)
		}, o.prototype.getOption = function() {
			var a = y(this.option);
			return E(a, function(t, e) {
				if (g.hasClass(e)) {
					for (var n = So(t), i = n.length, r = !1, o = i - 1; 0 <= o; o--) n[o] && !Po(n[
						o]) ? r = !0 : (n[o] = null, r || i--);
					n.length = i, a[e] = n
				}
			}), delete a[Sd], a
		}, o.prototype.getTheme = function() {
			return this._theme
		}, o.prototype.getLocaleModel = function() {
			return this._locale
		}, o.prototype.setUpdatePayload = function(t) {
			this._payload = t
		}, o.prototype.getUpdatePayload = function() {
			return this._payload
		}, o.prototype.getComponent = function(t, e) {
			var n = this._componentsMap.get(t);
			if (n) {
				t = n[e || 0];
				if (t) return t;
				if (null == e)
					for (var i = 0; i < n.length; i++)
						if (n[i]) return n[i]
			}
		}, o.prototype.queryComponents = function(t) {
			var e, n, i, r, o, a = t.mainType;
			return a && (e = t.index, n = t.id, i = t.name, r = this._componentsMap.get(a)) && r.length ? (
				null != e ? (o = [], E(So(e), function(t) {
					r[t] && o.push(r[t])
				})) : o = null != n ? Td("id", n, r) : null != i ? Td("name", i, r) : ht(r, function(t) {
					return !!t
				}), Id(o, t)) : []
		}, o.prototype.findComponents = function(t) {
			var e, n = t.query,
				i = t.mainType,
				r = (r = i + "Index", o = i + "Id", e = i + "Name", !(n = n) || null == n[r] && null == n[o] &&
					null == n[e] ? null : {
						mainType: i,
						index: n[r],
						id: n[o],
						name: n[e]
					}),
				o = r ? this.queryComponents(r) : ht(this._componentsMap.get(i), function(t) {
					return !!t
				});
			return n = Id(o, t), t.filter ? ht(n, t.filter) : n
		}, o.prototype.eachComponent = function(t, e, n) {
			var i = this._componentsMap;
			if (D(t)) {
				var r = e,
					o = t;
				i.each(function(t, e) {
					for (var n = 0; t && n < t.length; n++) {
						var i = t[n];
						i && o.call(r, e, i, i.componentIndex)
					}
				})
			} else
				for (var a = V(t) ? i.get(t) : O(t) ? this.findComponents(t) : null, s = 0; a && s < a
					.length; s++) {
					var l = a[s];
					l && e.call(n, l, l.componentIndex)
				}
		}, o.prototype.getSeriesByName = function(t) {
			var e = Ao(t, null);
			return ht(this._componentsMap.get("series"), function(t) {
				return !!t && null != e && t.name === e
			})
		}, o.prototype.getSeriesByIndex = function(t) {
			return this._componentsMap.get("series")[t]
		}, o.prototype.getSeriesByType = function(e) {
			return ht(this._componentsMap.get("series"), function(t) {
				return !!t && t.subType === e
			})
		}, o.prototype.getSeries = function() {
			return ht(this._componentsMap.get("series"), function(t) {
				return !!t
			})
		}, o.prototype.getSeriesCount = function() {
			return this._componentsCount.get("series")
		}, o.prototype.eachSeries = function(n, i) {
			yd(this), E(this._seriesIndices, function(t) {
				var e = this._componentsMap.get("series")[t];
				n.call(i, e, t)
			}, this)
		}, o.prototype.eachRawSeries = function(e, n) {
			E(this._componentsMap.get("series"), function(t) {
				t && e.call(n, t, t.componentIndex)
			})
		}, o.prototype.eachSeriesByType = function(n, i, r) {
			yd(this), E(this._seriesIndices, function(t) {
				var e = this._componentsMap.get("series")[t];
				e.subType === n && i.call(r, e, t)
			}, this)
		}, o.prototype.eachRawSeriesByType = function(t, e, n) {
			return E(this.getSeriesByType(t), e, n)
		}, o.prototype.isSeriesFiltered = function(t) {
			return yd(this), null == this._seriesIndicesMap.get(t.componentIndex)
		}, o.prototype.getCurrentSeriesIndices = function() {
			return (this._seriesIndices || []).slice()
		}, o.prototype.filterSeries = function(n, i) {
			yd(this);
			var r = [];
			E(this._seriesIndices, function(t) {
				var e = this._componentsMap.get("series")[t];
				n.call(i, e, t) && r.push(t)
			}, this), this._seriesIndices = r, this._seriesIndicesMap = N(r)
		}, o.prototype.restoreData = function(n) {
			gd(this);
			var t = this._componentsMap,
				i = [];
			t.each(function(t, e) {
				g.hasClass(e) && i.push(e)
			}), g.topologicalTravel(i, g.getAllClassMainTypes(), function(e) {
				E(t.get(e), function(t) {
					!t || "series" === e && function(t, e) {
						{
							var n, i;
							if (e) return n = e.seriesIndex, i = e.seriesId, e = e
								.seriesName, null != n && t.componentIndex !== n ||
								null != i && t.id !== i || null != e && t.name !== e
						}
					}(t, n) || t.restoreData()
				})
			})
		}, o.internalField = (gd = function(t) {
			var e = t._seriesIndices = [];
			E(t._componentsMap.get("series"), function(t) {
				t && e.push(t.componentIndex)
			}), t._seriesIndicesMap = N(e)
		}, yd = function(t) {}, void(md = function(t, e) {
			t.option = {}, t.option[Sd] = 1, t._componentsMap = N({
				series: []
			}), t._componentsCount = N();
			var n, i, r = e.aria;
			O(r) && null == r.enabled && (r.enabled = !0), n = e, r = t._theme.option, i = n.color && !n
				.colorLayer, E(r, function(t, e) {
					"colorLayer" === e && i || g.hasClass(e) || ("object" == typeof t ? n[e] = n[
						e] ? d(n[e], t, !1) : y(t) : null == n[e] && (n[e] = t))
				}), d(e, $p, !1), t._mergeOption(e, null)
		})), o);

	function o() {
		return null !== wd && wd.apply(this, arguments) || this
	}

	function Td(e, t, n) {
		var i, r;
		return F(t) ? (i = N(), E(t, function(t) {
			null != t && null != Ao(t, null) && i.set(t, !0)
		}), ht(n, function(t) {
			return t && i.get(t[e])
		})) : (r = Ao(t, null), ht(n, function(t) {
			return t && null != r && t[e] === r
		}))
	}

	function Id(t, e) {
		return e.hasOwnProperty("subType") ? ht(t, function(t) {
			return t && t.subType === e.subType
		}) : t
	}

	function Cd(t) {
		var e = N();
		return t && E(So(t.replaceMerge), function(t) {
			e.set(t, !0)
		}), {
			replaceMergeMainTypeMap: e
		}
	}
	st(Md, _d);

	function Dd(e) {
		E(kd, function(t) {
			this[t] = pt(e[t], e)
		}, this)
	}
	var kd = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isSSR",
			"isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getOption", "getId",
			"updateLabelLayout"
		],
		Ad = {},
		Ld = (Pd.prototype.create = function(n, i) {
			var r = [];
			E(Ad, function(t, e) {
				t = t.create(n, i);
				r = r.concat(t || [])
			}), this._coordinateSystems = r
		}, Pd.prototype.update = function(e, n) {
			E(this._coordinateSystems, function(t) {
				t.update && t.update(e, n)
			})
		}, Pd.prototype.getCoordinateSystems = function() {
			return this._coordinateSystems.slice()
		}, Pd.register = function(t, e) {
			Ad[t] = e
		}, Pd.get = function(t) {
			return Ad[t]
		}, Pd);

	function Pd() {
		this._coordinateSystems = []
	}
	var Od = /^(min|max)?(.+)$/,
		Rd = (Nd.prototype.setOption = function(t, e, n) {
			t && (E(So(t.series), function(t) {
				t && t.data && gt(t.data) && Dt(t.data)
			}), E(So(t.dataset), function(t) {
				t && t.source && gt(t.source) && Dt(t.source)
			})), t = y(t);
			var i = this._optionBackup,
				t = function(t, n, i) {
					var e, r, o = [],
						a = t.baseOption,
						s = t.timeline,
						l = t.options,
						u = t.media,
						h = !!t.media,
						c = !!(l || s || a && a.timeline);
					a ? (r = a).timeline || (r.timeline = s) : ((c || h) && (t.options = t.media = null), r =
					t);
					h && F(u) && E(u, function(t) {
						t && t.option && (t.query ? o.push(t) : e = e || t)
					});

					function p(e) {
						E(n, function(t) {
							t(e, i)
						})
					}
					return p(r), E(l, p), E(o, function(t) {
						return p(t.option)
					}), {
						baseOption: r,
						timelineOptions: l || [],
						mediaDefault: e,
						mediaList: o
					}
				}(t, e, !i);
			this._newBaseOption = t.baseOption, i ? (t.timelineOptions.length && (i.timelineOptions = t
					.timelineOptions), t.mediaList.length && (i.mediaList = t.mediaList), t.mediaDefault &&
				(i.mediaDefault = t.mediaDefault)) : this._optionBackup = t
		}, Nd.prototype.mountOption = function(t) {
			var e = this._optionBackup;
			return this._timelineOptions = e.timelineOptions, this._mediaList = e.mediaList, this
				._mediaDefault = e.mediaDefault, this._currentMediaIndices = [], y(t ? e.baseOption : this
					._newBaseOption)
		}, Nd.prototype.getTimelineOption = function(t) {
			var e, n = this._timelineOptions;
			return e = n.length && (t = t.getComponent("timeline")) ? y(n[t.getCurrentIndex()]) : e
		}, Nd.prototype.getMediaOption = function(t) {
			var e = this._api.getWidth(),
				n = this._api.getHeight(),
				i = this._mediaList,
				r = this._mediaDefault,
				o = [],
				a = [];
			if (i.length || r) {
				for (var s, l, u = 0, h = i.length; u < h; u++) ! function(t, e, n) {
					var i = {
							width: e,
							height: n,
							aspectratio: e / n
						},
						r = !0;
					return E(t, function(t, e) {
						var n, e = e.match(Od);
						e && e[1] && e[2] && (n = e[1], e = e[2].toLowerCase(), e = i[e], t = t, (
								"min" === (n = n) ? t <= e : "max" === n ? e <= t : e === t) ||
							(r = !1))
					}), r
				}(i[u].query, e, n) || o.push(u);
				(o = !o.length && r ? [-1] : o).length && (s = o, l = this._currentMediaIndices, s.join(",") !==
					l.join(",")) && (a = B(o, function(t) {
					return y((-1 === t ? r : i[t]).option)
				})), this._currentMediaIndices = o
			}
			return a
		}, Nd);

	function Nd(t) {
		this._timelineOptions = [], this._mediaList = [], this._currentMediaIndices = [], this._api = t
	}
	var Ed = E,
		zd = O,
		Bd = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"];

	function Fd(t) {
		var e = t && t.itemStyle;
		if (e)
			for (var n = 0, i = Bd.length; n < i; n++) {
				var r = Bd[n],
					o = e.normal,
					a = e.emphasis;
				o && o[r] && (t[r] = t[r] || {}, t[r].normal ? d(t[r].normal, o[r]) : t[r].normal = o[r], o[r] =
					null), a && a[r] && (t[r] = t[r] || {}, t[r].emphasis ? d(t[r].emphasis, a[r]) : t[r]
					.emphasis = a[r], a[r] = null)
			}
	}

	function Vd(t, e, n) {
		var i, r;
		t && t[e] && (t[e].normal || t[e].emphasis) && (i = t[e].normal, r = t[e].emphasis, i && (n ? (t[e].normal =
			t[e].emphasis = null, z(t[e], i)) : t[e] = i), r) && (t.emphasis = t.emphasis || {}, (t.emphasis[
			e] = r).focus && (t.emphasis.focus = r.focus), r.blurScope) && (t.emphasis.blurScope = r.blurScope)
	}

	function Gd(t) {
		Vd(t, "itemStyle"), Vd(t, "lineStyle"), Vd(t, "areaStyle"), Vd(t, "label"), Vd(t, "labelLine"), Vd(t,
			"upperLabel"), Vd(t, "edgeLabel")
	}

	function Hd(t, e) {
		var n = zd(t) && t[e],
			i = zd(n) && n.textStyle;
		if (i)
			for (var r = 0, o = To.length; r < o; r++) {
				var a = To[r];
				i.hasOwnProperty(a) && (n[a] = i[a])
			}
	}

	function Wd(t) {
		t && (Gd(t), Hd(t, "label"), t.emphasis) && Hd(t.emphasis, "label")
	}

	function Ud(t) {
		return F(t) ? t : t ? [t] : []
	}

	function Xd(t) {
		return (F(t) ? t[0] : t) || {}
	}

	function Yd(e, t) {
		Ed(Ud(e.series), function(t) {
			if (zd(t))
				if (zd(t)) {
					Fd(t), Gd(t), Hd(t, "label"), Hd(t, "upperLabel"), Hd(t, "edgeLabel"), t.emphasis && (
						Hd(t.emphasis, "label"), Hd(t.emphasis, "upperLabel"), Hd(t.emphasis,
							"edgeLabel"));
					var e = t.markPoint,
						n = (e && (Fd(e), Wd(e)), t.markLine),
						i = (n && (Fd(n), Wd(n)), t.markArea),
						r = (i && Wd(i), t.data);
					if ("graph" === t.type) {
						var r = r || t.nodes,
							o = t.links || t.edges;
						if (o && !gt(o))
							for (var a = 0; a < o.length; a++) Wd(o[a]);
						E(t.categories, function(t) {
							Gd(t)
						})
					}
					if (r && !gt(r))
						for (a = 0; a < r.length; a++) Wd(r[a]);
					if ((e = t.markPoint) && e.data)
						for (var s = e.data, a = 0; a < s.length; a++) Wd(s[a]);
					if ((n = t.markLine) && n.data)
						for (var l = n.data, a = 0; a < l.length; a++) F(l[a]) ? (Wd(l[a][0]), Wd(l[a][
							1])) : Wd(l[a]);
					"gauge" === t.type ? (Hd(t, "axisLabel"), Hd(t, "title"), Hd(t, "detail")) :
						"treemap" === t.type ? (Vd(t.breadcrumb, "itemStyle"), E(t.levels, function(t) {
							Gd(t)
						})) : "tree" === t.type && Gd(t.leaves)
				}
		});
		var n = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
		t && n.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), Ed(n, function(t) {
			Ed(Ud(e[t]), function(t) {
				t && (Hd(t, "axisLabel"), Hd(t.axisPointer, "label"))
			})
		}), Ed(Ud(e.parallel), function(t) {
			t = t && t.parallelAxisDefault;
			Hd(t, "axisLabel"), Hd(t && t.axisPointer, "label")
		}), Ed(Ud(e.calendar), function(t) {
			Vd(t, "itemStyle"), Hd(t, "dayLabel"), Hd(t, "monthLabel"), Hd(t, "yearLabel")
		}), Ed(Ud(e.radar), function(t) {
			Hd(t, "name"), t.name && null == t.axisName && (t.axisName = t.name, delete t.name), null != t
				.nameGap && null == t.axisNameGap && (t.axisNameGap = t.nameGap, delete t.nameGap)
		}), Ed(Ud(e.geo), function(t) {
			zd(t) && (Wd(t), Ed(Ud(t.regions), function(t) {
				Wd(t)
			}))
		}), Ed(Ud(e.timeline), function(t) {
			Wd(t), Vd(t, "label"), Vd(t, "itemStyle"), Vd(t, "controlStyle", !0);
			t = t.data;
			F(t) && E(t, function(t) {
				O(t) && (Vd(t, "label"), Vd(t, "itemStyle"))
			})
		}), Ed(Ud(e.toolbox), function(t) {
			Vd(t, "iconStyle"), Ed(t.feature, function(t) {
				Vd(t, "iconStyle")
			})
		}), Hd(Xd(e.axisPointer), "label"), Hd(Xd(e.tooltip).axisPointer, "label")
	}

	function qd(e) {
		e && E(Zd, function(t) {
			t[0] in e && !(t[1] in e) && (e[t[1]] = e[t[0]])
		})
	}
	var Zd = [
			["x", "left"],
			["y", "top"],
			["x2", "right"],
			["y2", "bottom"]
		],
		jd = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"],
		Kd = [
			["borderRadius", "barBorderRadius"],
			["borderColor", "barBorderColor"],
			["borderWidth", "barBorderWidth"]
		];

	function $d(t) {
		var e = t && t.itemStyle;
		if (e)
			for (var n = 0; n < Kd.length; n++) {
				var i = Kd[n][1],
					r = Kd[n][0];
				null != e[i] && (e[r] = e[i])
			}
	}

	function Qd(t) {
		t && "edge" === t.alignTo && null != t.margin && null == t.edgeDistance && (t.edgeDistance = t.margin)
	}

	function Jd(t) {
		t && t.downplay && !t.blur && (t.blur = t.downplay)
	}

	function tf(e, t) {
		Yd(e, t), e.series = So(e.series), E(e.series, function(t) {
			if (O(t)) {
				var e, n = t.type;
				if ("line" === n) null != t.clipOverflow && (t.clip = t.clipOverflow);
				else if ("pie" === n || "gauge" === n) {
					if (null != t.clockWise && (t.clockwise = t.clockWise), Qd(t.label), (e = t.data) && !
						gt(e))
						for (var i = 0; i < e.length; i++) Qd(e[i]);
					null != t.hoverOffset && (t.emphasis = t.emphasis || {}, t.emphasis.scaleSize = null) &&
						(t.emphasis.scaleSize = t.hoverOffset)
				} else if ("gauge" === n) {
					var r = function(t, e) {
						for (var n = e.split(","), i = t, r = 0; r < n.length && null != (i = i && i[n[
								r]]); r++);
						return i
					}(t, "pointer.color");
					if (null != r) {
						var o = t;
						var a = "itemStyle.color";
						var s = void 0;
						for (var l, u = a.split(","), h = o, c = 0; c < u.length - 1; c++) null == h[l = u[
							c]] && (h[l] = {}), h = h[l];
						!s && null != h[u[c]] || (h[u[c]] = r)
					}
				} else if ("bar" === n) {
					if ($d(t), $d(t.backgroundStyle), $d(t.emphasis), (e = t.data) && !gt(e))
						for (i = 0; i < e.length; i++) "object" == typeof e[i] && ($d(e[i]), $d(e[i] && e[i]
							.emphasis))
				} else "sunburst" === n ? ((a = t.highlightPolicy) && (t.emphasis = t.emphasis || {}, t
						.emphasis.focus || (t.emphasis.focus = a)), Jd(t), function t(e, n) {
						if (e)
							for (var i = 0; i < e.length; i++) n(e[i]), e[i] && t(e[i].children, n)
					}(t.data, Jd)) : "graph" === n || "sankey" === n ? (o = t) && null != o
					.focusNodeAdjacency && (o.emphasis = o.emphasis || {}, null == o.emphasis.focus) && (o
						.emphasis.focus = "adjacency") : "map" === n && (t.mapType && !t.map && (t.map = t
						.mapType), t.mapLocation) && z(t, t.mapLocation);
				null != t.hoverAnimation && (t.emphasis = t.emphasis || {}, t.emphasis) && null == t
					.emphasis.scale && (t.emphasis.scale = t.hoverAnimation), qd(t)
			}
		}), e.dataRange && (e.visualMap = e.dataRange), E(jd, function(t) {
			t = e[t];
			t && E(t = F(t) ? t : [t], function(t) {
				qd(t)
			})
		})
	}

	function ef(_) {
		E(_, function(p, d) {
			var f = [],
				g = [NaN, NaN],
				t = [p.stackResultDimension, p.stackedOverDimension],
				y = p.data,
				m = p.isStackedByIndex,
				v = p.seriesModel.get("stackStrategy") || "samesign";
			y.modify(t, function(t, e, n) {
				var i, r, o = y.get(p.stackedDimension, n);
				if (isNaN(o)) return g;
				m ? r = y.getRawIndex(n) : i = y.get(p.stackedByDimension, n);
				for (var a, s, l, u = NaN, h = d - 1; 0 <= h; h--) {
					var c = _[h];
					if (0 <= (r = m ? r : c.data.rawIndexOf(c.stackedByDimension, i))) {
						c = c.data.getByRawIndex(c.stackResultDimension, r);
						if ("all" === v || "positive" === v && 0 < c || "negative" === v && c < 0 ||
							"samesign" === v && 0 <= o && 0 < c || "samesign" === v && o <= 0 && c <
							0) {
							a = o, s = c, l = void 0, l = Math.max(oo(a), oo(s)), a += s, o = eo <
								l ? a : io(a, l), u = c;
							break
						}
					}
				}
				return f[0] = o, f[1] = u, f
			})
		})
	}
	var nf, rf, of = function(t) {
		this.data = t.data || (t.sourceFormat === nd ? {} : []), this.sourceFormat = t.sourceFormat || rd, this
			.seriesLayoutBy = t.seriesLayoutBy || od, this.startIndex = t.startIndex || 0, this
			.dimensionsDetectedCount = t.dimensionsDetectedCount, this.metaRawOption = t.metaRawOption;
		var e = this.dimensionsDefine = t.dimensionsDefine;
		if (e)
			for (var n = 0; n < e.length; n++) {
				var i = e[n];
				null == i.type && pd(this, n) === sd.Must && (i.type = "ordinal")
			}
	};

	function af(t) {
		return t instanceof of
	}

	function sf(t, e, n) {
		n = n || uf(t);
		var i = e.seriesLayoutBy,
			r = function(t, e, n, i, r) {
				var o, a;
				if (!t) return {
					dimensionsDefine: hf(r),
					startIndex: a,
					dimensionsDetectedCount: o
				}; {
					var s;
					e === td ? (s = t, "auto" === i || null == i ? cf(function(t) {
							null != t && "-" !== t && (V(t) ? null == a && (a = 1) : a = 0)
						}, n, s, 10) : a = G(i) ? i : i ? 1 : 0, r || 1 !== a || (r = [], cf(function(t, e) {
							r[e] = null != t ? t + "" : ""
						}, n, s, 1 / 0)), o = r ? r.length : n === ad ? s.length : s[0] ? s[0].length : null) :
						e === ed ? r = r || function(t) {
							var e, n = 0;
							for (; n < t.length && !(e = t[n++]););
							if (e) return ct(e)
						}(t) : e === nd ? r || (r = [], E(t, function(t, e) {
							r.push(e)
						})) : e === Jp && (i = Io(t[0]), o = F(i) && i.length || 1)
				}
				return {
					startIndex: a,
					dimensionsDefine: hf(r),
					dimensionsDetectedCount: o
				}
			}(t, n, i, e.sourceHeader, e.dimensions);
		return new of({
			data: t,
			sourceFormat: n,
			seriesLayoutBy: i,
			dimensionsDefine: r.dimensionsDefine,
			startIndex: r.startIndex,
			dimensionsDetectedCount: r.dimensionsDetectedCount,
			metaRawOption: y(e)
		})
	}

	function lf(t) {
		return new of({
			data: t,
			sourceFormat: gt(t) ? id : Jp
		})
	}

	function uf(t) {
		var e = rd;
		if (gt(t)) e = id;
		else if (F(t)) {
			0 === t.length && (e = td);
			for (var n = 0, i = t.length; n < i; n++) {
				var r = t[n];
				if (null != r) {
					if (F(r) || gt(r)) {
						e = td;
						break
					}
					if (O(r)) {
						e = ed;
						break
					}
				}
			}
		} else if (O(t))
			for (var o in t)
				if (Bt(t, o) && lt(t[o])) {
					e = nd;
					break
				} return e
	}

	function hf(t) {
		var i;
		if (t) return i = N(), B(t, function(t, e) {
			var n, t = {
				name: (t = O(t) ? t : {
					name: t
				}).name,
				displayName: t.displayName,
				type: t.type
			};
			return null != t.name && (t.name += "", null == t.displayName && (t.displayName = t.name), (
				n = i.get(t.name)) ? t.name += "-" + n.count++ : i.set(t.name, {
				count: 1
			})), t
		})
	}

	function cf(t, e, n, i) {
		if (e === ad)
			for (var r = 0; r < n.length && r < i; r++) t(n[r] ? n[r][0] : null, r);
		else
			for (var o = n[0] || [], r = 0; r < o.length && r < i; r++) t(o[r], r)
	}

	function pf(t) {
		t = t.sourceFormat;
		return t === ed || t === nd
	}
	mf.prototype.getSource = function() {
			return this._source
		}, mf.prototype.count = function() {
			return 0
		}, mf.prototype.getItem = function(t, e) {}, mf.prototype.appendData = function(t) {}, mf.prototype.clean =
		function() {}, mf.protoInitialize = ((ec = mf.prototype).pure = !1, void(ec.persistent = !0)), mf
		.internalField = (rf = function(t, e, n) {
			var i, r = n.sourceFormat,
				o = n.seriesLayoutBy,
				a = n.startIndex,
				n = n.dimensionsDefine;
			P(t, nf[Df(r, o)]), r === id ? (t.getItem = df, t.count = gf, t.fillStorage = ff) : (i = bf(r, o), t
				.getItem = pt(i, null, e, a, n), i = Mf(r, o), t.count = pt(i, null, e, a, n))
		}, df = function(t, e) {
			t -= this._offset, e = e || [];
			for (var n = this._data, i = this._dimSize, r = i * t, o = 0; o < i; o++) e[o] = n[r + o];
			return e
		}, ff = function(t, e, n, i) {
			for (var r = this._data, o = this._dimSize, a = 0; a < o; a++) {
				for (var s = i[a], l = null == s[0] ? 1 / 0 : s[0], u = null == s[1] ? -1 / 0 : s[1], h = e - t,
						c = n[a], p = 0; p < h; p++) {
					var d = r[p * o + a];
					(c[t + p] = d) < l && (l = d), u < d && (u = d)
				}
				s[0] = l, s[1] = u
			}
		}, gf = function() {
			return this._data ? this._data.length / this._dimSize : 0
		}, (ec = {})[td + "_" + od] = {
			pure: !0,
			appendData: vf
		}, ec[td + "_" + ad] = {
			pure: !0,
			appendData: function() {
				throw new Error('Do not support appendData when set seriesLayoutBy: "row".')
			}
		}, ec[ed] = {
			pure: !0,
			appendData: vf
		}, ec[nd] = {
			pure: !0,
			appendData: function(t) {
				var r = this._data;
				E(t, function(t, e) {
					for (var n = r[e] || (r[e] = []), i = 0; i < (t || []).length; i++) n.push(t[i])
				})
			}
		}, ec[Jp] = {
			appendData: vf
		}, ec[id] = {
			persistent: !1,
			pure: !0,
			appendData: function(t) {
				this._data = t
			},
			clean: function() {
				this._offset += this.count(), this._data = null
			}
		}, void(nf = ec));
	var df, ff, gf, yf = mf;

	function mf(t, e) {
		var t = af(t) ? t : lf(t),
			n = (this._source = t, this._data = t.data);
		t.sourceFormat === id && (this._offset = 0, this._dimSize = e, this._data = n), rf(this, n, t)
	}

	function vf(t) {
		for (var e = 0; e < t.length; e++) this._data.push(t[e])
	}

	function _f(t, e, n, i) {
		return t[i]
	}(ip = {})[td + "_" + od] = function(t, e, n, i) {
		return t[i + e]
	}, ip[td + "_" + ad] = function(t, e, n, i, r) {
		i += e;
		for (var o = r || [], a = t, s = 0; s < a.length; s++) {
			var l = a[s];
			o[s] = l ? l[i] : null
		}
		return o
	}, ip[ed] = _f, ip[nd] = function(t, e, n, i, r) {
		for (var o = r || [], a = 0; a < n.length; a++) {
			var s = t[n[a].name];
			o[a] = s ? s[i] : null
		}
		return o
	}, ip[Jp] = _f;
	var xf = ip;

	function bf(t, e) {
		return xf[Df(t, e)]
	}

	function wf(t, e, n) {
		return t.length
	}(Oc = {})[td + "_" + od] = function(t, e, n) {
		return Math.max(0, t.length - e)
	}, Oc[td + "_" + ad] = function(t, e, n) {
		t = t[0];
		return t ? Math.max(0, t.length - e) : 0
	}, Oc[ed] = wf, Oc[nd] = function(t, e, n) {
		t = t[n[0].name];
		return t ? t.length : 0
	}, Oc[Jp] = wf;
	var Sf = Oc;

	function Mf(t, e) {
		return Sf[Df(t, e)]
	}

	function Tf(t, e, n) {
		return t[e]
	}(ea = {})[td] = Tf, ea[ed] = function(t, e, n) {
		return t[n]
	}, ea[nd] = Tf, ea[Jp] = function(t, e, n) {
		t = Io(t);
		return t instanceof Array ? t[e] : t
	}, ea[id] = Tf;
	var If = ea;

	function Cf(t) {
		return If[t]
	}

	function Df(t, e) {
		return t === td ? t + "_" + e : t
	}

	function kf(t, e, n) {
		if (t) {
			var i, r, e = t.getRawDataItem(e);
			if (null != e) return i = (r = t.getStore()).getSource().sourceFormat, null != n ? (t = t
				.getDimensionIndex(n), n = r.getDimensionProperty(t), Cf(i)(e, t, n)) : (r = e, i === Jp ?
				Io(e) : r)
		}
	}
	var Af = /\{@(.+?)\}/g,
		zc = (Lf.prototype.getDataParams = function(t, e) {
			var n = this.getData(e),
				i = this.getRawValue(t, e),
				r = n.getRawIndex(t),
				o = n.getName(t),
				a = n.getRawDataItem(t),
				s = n.getItemVisual(t, "style"),
				t = s && s[n.getItemVisual(t, "drawType") || "fill"],
				s = s && s.stroke,
				l = this.mainType,
				u = "series" === l,
				n = n.userOutput && n.userOutput.get();
			return {
				componentType: l,
				componentSubType: this.subType,
				componentIndex: this.componentIndex,
				seriesType: u ? this.subType : null,
				seriesIndex: this.seriesIndex,
				seriesId: u ? this.id : null,
				seriesName: u ? this.name : null,
				name: o,
				dataIndex: r,
				data: a,
				dataType: e,
				value: i,
				color: t,
				borderColor: s,
				dimensionNames: n ? n.fullDimensions : null,
				encode: n ? n.encode : null,
				$vars: ["seriesName", "name", "value"]
			}
		}, Lf.prototype.getFormattedLabel = function(i, t, e, n, r, o) {
			t = t || "normal";
			var a = this.getData(e),
				e = this.getDataParams(i, e);
			return o && (e.value = o.interpolatedValue), null != n && F(e.value) && (e.value = e.value[n]), D(
				r = r || a.getItemModel(i).get("normal" === t ? ["label", "formatter"] : [t, "label",
					"formatter"
				])) ? (e.status = t, e.dimensionIndex = n, r(e)) : V(r) ? Lp(r, e).replace(Af, function(t,
				e) {
				var n = e.length,
					n = ("[" === e.charAt(0) && "]" === e.charAt(n - 1) && (e = +e.slice(1, n - 1)), kf(
						a, i, e));
				return null != (n = o && F(o.interpolatedValue) && 0 <= (e = a.getDimensionIndex(e)) ? o
					.interpolatedValue[e] : n) ? n + "" : ""
			}) : void 0
		}, Lf.prototype.getRawValue = function(t, e) {
			return kf(this.getData(e), t)
		}, Lf.prototype.formatTooltip = function(t, e, n) {}, Lf);

	function Lf() {}

	function Pf(t) {
		var e, n;
		return O(t) ? t.type && (n = t) : e = t, {
			text: e,
			frag: n
		}
	}

	function Of(t) {
		return new Rf(t)
	}
	Nf.prototype.perform = function(t) {
		var e, n, i = this._upstream,
			r = t && t.skip,
			o = (this._dirty && i && ((o = this.context).data = o.outputData = i.context.outputData), this
				.__pipeline && (this.__pipeline.currentTask = this), this._plan && !r && (e = this._plan(this
					.context)), u(this._modBy)),
			a = this._modDataCount || 0,
			s = u(t && t.modBy),
			l = t && t.modDataCount || 0;

		function u(t) {
			return t = 1 <= t ? t : 1
		}
		o === s && a === l || (e = "reset"), !this._dirty && "reset" !== e || (this._dirty = !1, n = this
			._doReset(r)), this._modBy = s, this._modDataCount = l;
		o = t && t.step;
		if (this._dueEnd = i ? i._outputDueEnd : this._count ? this._count(this.context) : 1 / 0, this
			._progress) {
			var h = this._dueIndex,
				c = Math.min(null != o ? this._dueIndex + o : 1 / 0, this._dueEnd);
			if (!r && (n || h < c)) {
				var p = this._progress;
				if (F(p))
					for (var d = 0; d < p.length; d++) this._doProgress(p[d], h, c, s, l);
				else this._doProgress(p, h, c, s, l)
			}
			this._dueIndex = c;
			a = null != this._settedOutputEnd ? this._settedOutputEnd : c;
			this._outputDueEnd = a
		} else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd :
			this._dueEnd;
		return this.unfinished()
	}, Nf.prototype.dirty = function() {
		this._dirty = !0, this._onDirty && this._onDirty(this.context)
	}, Nf.prototype._doProgress = function(t, e, n, i, r) {
		Hf.reset(e, n, i, r), this._callingProgress = t, this._callingProgress({
			start: e,
			end: n,
			count: n - e,
			next: Hf.next
		}, this.context)
	}, Nf.prototype._doReset = function(t) {
		this._dueIndex = this._outputDueEnd = this._dueEnd = 0, this._settedOutputEnd = null, !t && this
			._reset && ((e = this._reset(this.context)) && e.progress && (n = e.forceFirstProgress, e = e
				.progress), F(e)) && !e.length && (e = null), this._progress = e, this._modBy = this
			._modDataCount = null;
		var e, n, t = this._downstream;
		return t && t.dirty(), n
	}, Nf.prototype.unfinished = function() {
		return this._progress && this._dueIndex < this._dueEnd
	}, Nf.prototype.pipe = function(t) {
		this._downstream === t && !this._dirty || ((this._downstream = t)._upstream = this, t.dirty())
	}, Nf.prototype.dispose = function() {
		this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this
			._downstream._upstream = null), this._dirty = !1, this._disposed = !0)
	}, Nf.prototype.getUpstream = function() {
		return this._upstream
	}, Nf.prototype.getDownstream = function() {
		return this._downstream
	}, Nf.prototype.setOutputEnd = function(t) {
		this._outputDueEnd = this._settedOutputEnd = t
	};
	var Rf = Nf;

	function Nf(t) {
		this._reset = (t = t || {}).reset, this._plan = t.plan, this._count = t.count, this._onDirty = t.onDirty,
			this._dirty = !0
	}
	var Ef, zf, Bf, Ff, Vf, Gf, Hf = Gf = {
		reset: function(t, e, n, i) {
			zf = t, Ef = e, Bf = n, Ff = i, Vf = Math.ceil(Ff / Bf), Gf.next = 1 < Bf && 0 < Ff ? Uf : Wf
		}
	};

	function Wf() {
		return zf < Ef ? zf++ : null
	}

	function Uf() {
		var t = zf % Vf * Bf + Math.ceil(zf / Vf),
			t = Ef <= zf ? null : t < Ff ? t : zf;
		return zf++, t
	}

	function Xf(t, e) {
		e = e && e.type;
		return "ordinal" === e ? t : null == (t = "time" !== e || G(t) || null == t || "-" === t ? t : +po(t)) ||
			"" === t ? NaN : +t
	}
	var Yf = N({
		number: function(t) {
			return parseFloat(t)
		},
		time: function(t) {
			return +po(t)
		},
		trim: function(t) {
			return V(t) ? It(t) : t
		}
	});

	function qf(t) {
		return Yf.get(t)
	}
	var Zf = {
			lt: function(t, e) {
				return t < e
			},
			lte: function(t, e) {
				return t <= e
			},
			gt: function(t, e) {
				return e < t
			},
			gte: function(t, e) {
				return e <= t
			}
		},
		jf = (Kf.prototype.evaluate = function(t) {
			return G(t) ? this._opFn(t, this._rvalFloat) : this._opFn(mo(t), this._rvalFloat)
		}, Kf);

	function Kf(t, e) {
		G(e) || f(""), this._opFn = Zf[t], this._rvalFloat = mo(e)
	}
	Qf.prototype.evaluate = function(t, e) {
		var n = G(t) ? t : mo(t),
			i = G(e) ? e : mo(e),
			r = isNaN(n),
			o = isNaN(i);
		return r && (n = this._incomparable), o && (i = this._incomparable), r && o && (r = V(t), o = V(e), r &&
			(n = o ? t : 0), o) && (i = r ? e : 0), n < i ? this._resultLT : i < n ? -this._resultLT : 0
	};
	var $f = Qf;

	function Qf(t, e) {
		t = "desc" === t;
		this._resultLT = t ? 1 : -1, this._incomparable = "min" === (e = null == e ? t ? "min" : "max" : e) ? -1 /
			0 : 1 / 0
	}
	tg.prototype.evaluate = function(t) {
		var e, n = t === this._rval;
		return n || (e = typeof t) === this._rvalTypeof || "number" != e && "number" !== this._rvalTypeof || (
			n = mo(t) === this._rvalFloat), this._isEQ ? n : !n
	};
	var Jf = tg;

	function tg(t, e) {
		this._rval = e, this._isEQ = t, this._rvalTypeof = typeof e, this._rvalFloat = mo(e)
	}
	ng.prototype.getRawData = function() {
			throw new Error("not supported")
		}, ng.prototype.getRawDataItem = function(t) {
			throw new Error("not supported")
		}, ng.prototype.cloneRawData = function() {}, ng.prototype.getDimensionInfo = function(t) {}, ng.prototype
		.cloneAllDimensionInfo = function() {}, ng.prototype.count = function() {}, ng.prototype.retrieveValue =
		function(t, e) {}, ng.prototype.retrieveValueFromItem = function(t, e) {}, ng.prototype.convertValue = Xf;
	var eg = ng;

	function ng() {}

	function ig(t) {
		return ug(t.sourceFormat) || f(""), t.data
	}

	function rg(t) {
		var e = t.sourceFormat,
			n = t.data;
		if (ug(e) || f(""), e === td) {
			for (var i = [], r = 0, o = n.length; r < o; r++) i.push(n[r].slice());
			return i
		}
		if (e === ed) {
			for (i = [], r = 0, o = n.length; r < o; r++) i.push(P({}, n[r]));
			return i
		}
	}

	function og(t, e, n) {
		if (null != n) return G(n) || !isNaN(n) && !Bt(e, n) ? t[n] : Bt(e, n) ? e[n] : void 0
	}

	function ag(t) {
		return y(t)
	}
	var sg = N();

	function lg(t, e) {
		var n = So(t),
			t = n.length;
		t || f("");
		for (var i = 0, r = t; i < r; i++) e = function(t, i) {
			i.length || f("");
			O(t) || f("");
			var e = t.type,
				d = sg.get(e);
			d || f("");
			e = B(i, function(t) {
				var e = t,
					t = d,
					n = new eg,
					i = e.data,
					r = n.sourceFormat = e.sourceFormat,
					o = e.startIndex,
					a = (e.seriesLayoutBy !== od && f(""), []),
					s = {};
				if (h = e.dimensionsDefine) E(h, function(t, e) {
					var n = t.name,
						e = {
							index: e,
							name: n,
							displayName: t.displayName
						};
					a.push(e), null != n && (Bt(s, n) && f(""), s[n] = e)
				});
				else
					for (var l = 0; l < e.dimensionsDetectedCount; l++) a.push({
						index: l
					});
				var u = bf(r, od),
					h = (t.__isBuiltIn && (n.getRawDataItem = function(t) {
						return u(i, o, a, t)
					}, n.getRawData = pt(ig, null, e)), n.cloneRawData = pt(rg, null, e), Mf(r, od)),
					c = (n.count = pt(h, null, i, o, a), Cf(r)),
					p = (n.retrieveValue = function(t, e) {
						t = u(i, o, a, t);
						return p(t, e)
					}, n.retrieveValueFromItem = function(t, e) {
						var n;
						return null != t && (n = a[e]) ? c(t, e, n.name) : void 0
					});
				return n.getDimensionInfo = pt(og, null, a, s), n.cloneAllDimensionInfo = pt(ag, null,
					a), n
			});
			return B(So(d.transform({
				upstream: e[0],
				upstreamList: e,
				config: y(t.config)
			})), function(t, e) {
				O(t) || f(""), t.data || f("");
				ug(uf(t.data)) || f("");
				var n = i[0],
					e = n && 0 === e && !t.dimensions ? ((e = n.startIndex) && (t.data = n.data.slice(0,
						e).concat(t.data)), {
						seriesLayoutBy: od,
						sourceHeader: e,
						dimensions: n.metaRawOption.dimensions
					}) : {
						seriesLayoutBy: od,
						sourceHeader: 0,
						dimensions: t.dimensions
					};
				return sf(t.data, e, null)
			})
		}(n[i], e), i !== r - 1 && (e.length = Math.max(e.length, 1));
		return e
	}

	function ug(t) {
		return t === td || t === ed
	}
	var hg, ec = "undefined",
		cg = typeof Uint32Array == ec ? Array : Uint32Array,
		pg = typeof Uint16Array == ec ? Array : Uint16Array,
		dg = typeof Int32Array == ec ? Array : Int32Array,
		ip = typeof Float64Array == ec ? Array : Float64Array,
		fg = {
			float: ip,
			int: dg,
			ordinal: Array,
			number: Array,
			time: ip
		};

	function gg(t) {
		return 65535 < t ? cg : pg
	}

	function yg() {
		return [1 / 0, -1 / 0]
	}

	function mg(t, e, n, i, r) {
		n = fg[n || "float"];
		if (r) {
			var o = t[e],
				a = o && o.length;
			if (a !== i) {
				for (var s = new n(i), l = 0; l < a; l++) s[l] = o[l];
				t[e] = s
			}
		} else t[e] = new n(i)
	}
	l.prototype.initData = function(t, e, n) {
		this._provider = t, this._chunks = [], this._indices = null, this.getRawIndex = this._getRawIdxIdentity;
		var i = t.getSource(),
			r = this.defaultDimValueGetter = hg[i.sourceFormat];
		this._dimValueGetter = n || r, this._rawExtent = [], pf(i), this._dimensions = B(e, function(t) {
			return {
				type: t.type,
				property: t.property
			}
		}), this._initDataFromProvider(0, t.count())
	}, l.prototype.getProvider = function() {
		return this._provider
	}, l.prototype.getSource = function() {
		return this._provider.getSource()
	}, l.prototype.ensureCalculationDimension = function(t, e) {
		var n = this._calcDimNameToIdx,
			i = this._dimensions,
			r = n.get(t);
		if (null != r) {
			if (i[r].type === e) return r
		} else r = i.length;
		return i[r] = {
			type: e
		}, n.set(t, r), this._chunks[r] = new fg[e || "float"](this._rawCount), this._rawExtent[r] = yg(), r
	}, l.prototype.collectOrdinalMeta = function(t, e) {
		for (var n = this._chunks[t], i = this._dimensions[t], r = this._rawExtent, o = i.ordinalOffset || 0,
				a = n.length, s = (0 === o && (r[t] = yg()), r[t]), l = o; l < a; l++) {
			var u = n[l] = e.parseAndCollect(n[l]);
			isNaN(u) || (s[0] = Math.min(u, s[0]), s[1] = Math.max(u, s[1]))
		}
		i.ordinalMeta = e, i.ordinalOffset = a, i.type = "ordinal"
	}, l.prototype.getOrdinalMeta = function(t) {
		return this._dimensions[t].ordinalMeta
	}, l.prototype.getDimensionProperty = function(t) {
		t = this._dimensions[t];
		return t && t.property
	}, l.prototype.appendData = function(t) {
		var e = this._provider,
			n = this.count(),
			t = (e.appendData(t), e.count());
		return e.persistent || (t += n), n < t && this._initDataFromProvider(n, t, !0), [n, t]
	}, l.prototype.appendValues = function(t, e) {
		for (var n = this._chunks, i = this._dimensions, r = i.length, o = this._rawExtent, a = this.count(),
				s = a + Math.max(t.length, e || 0), l = 0; l < r; l++) mg(n, l, (d = i[l]).type, s, !0);
		for (var u = [], h = a; h < s; h++)
			for (var c = h - a, p = 0; p < r; p++) {
				var d = i[p],
					f = hg.arrayRows.call(this, t[c] || u, d.property, c, p),
					g = (n[p][h] = f, o[p]);
				f < g[0] && (g[0] = f), f > g[1] && (g[1] = f)
			}
		return {
			start: a,
			end: this._rawCount = this._count = s
		}
	}, l.prototype._initDataFromProvider = function(t, e, n) {
		for (var i = this._provider, r = this._chunks, o = this._dimensions, a = o.length, s = this._rawExtent,
				l = B(o, function(t) {
					return t.property
				}), u = 0; u < a; u++) {
			var h = o[u];
			s[u] || (s[u] = yg()), mg(r, u, h.type, e, n)
		}
		if (i.fillStorage) i.fillStorage(t, e, r, s);
		else
			for (var c = [], p = t; p < e; p++)
				for (var c = i.getItem(p, c), d = 0; d < a; d++) {
					var f = r[d],
						g = this._dimValueGetter(c, l[d], p, d),
						f = (f[p] = g, s[d]);
					g < f[0] && (f[0] = g), g > f[1] && (f[1] = g)
				}!i.persistent && i.clean && i.clean(), this._rawCount = this._count = e, this._extent = []
	}, l.prototype.count = function() {
		return this._count
	}, l.prototype.get = function(t, e) {
		return 0 <= e && e < this._count && (t = this._chunks[t]) ? t[this.getRawIndex(e)] : NaN
	}, l.prototype.getValues = function(t, e) {
		var n = [],
			i = [];
		if (null == e) {
			e = t, t = [];
			for (var r = 0; r < this._dimensions.length; r++) i.push(r)
		} else i = t;
		for (var r = 0, o = i.length; r < o; r++) n.push(this.get(i[r], e));
		return n
	}, l.prototype.getByRawIndex = function(t, e) {
		return 0 <= e && e < this._rawCount && (t = this._chunks[t]) ? t[e] : NaN
	}, l.prototype.getSum = function(t) {
		var e = 0;
		if (this._chunks[t])
			for (var n = 0, i = this.count(); n < i; n++) {
				var r = this.get(t, n);
				isNaN(r) || (e += r)
			}
		return e
	}, l.prototype.getMedian = function(t) {
		var e = [],
			t = (this.each([t], function(t) {
				isNaN(t) || e.push(t)
			}), e.sort(function(t, e) {
				return t - e
			})),
			n = this.count();
		return 0 === n ? 0 : n % 2 == 1 ? t[(n - 1) / 2] : (t[n / 2] + t[n / 2 - 1]) / 2
	}, l.prototype.indexOfRawIndex = function(t) {
		if (!(t >= this._rawCount || t < 0)) {
			if (!this._indices) return t;
			var e = this._indices,
				n = e[t];
			if (null != n && n < this._count && n === t) return t;
			for (var i = 0, r = this._count - 1; i <= r;) {
				var o = (i + r) / 2 | 0;
				if (e[o] < t) i = 1 + o;
				else {
					if (!(e[o] > t)) return o;
					r = o - 1
				}
			}
		}
		return -1
	}, l.prototype.indicesOfNearest = function(t, e, n) {
		var i = this._chunks[t],
			r = [];
		if (i) {
			null == n && (n = 1 / 0);
			for (var o = 1 / 0, a = -1, s = 0, l = 0, u = this.count(); l < u; l++) {
				var h = e - i[this.getRawIndex(l)],
					c = Math.abs(h);
				c <= n && ((c < o || c === o && 0 <= h && a < 0) && (o = c, a = h, s = 0), h === a) && (r[s++] =
					l)
			}
			r.length = s
		}
		return r
	}, l.prototype.getIndices = function() {
		var t = this._indices;
		if (t) {
			var e = t.constructor,
				n = this._count;
			if (e === Array)
				for (var i = new e(n), r = 0; r < n; r++) i[r] = t[r];
			else i = new e(t.buffer, 0, n)
		} else {
			i = new(e = gg(this._rawCount))(this.count());
			for (r = 0; r < i.length; r++) i[r] = r
		}
		return i
	}, l.prototype.filter = function(t, e) {
		if (!this._count) return this;
		for (var n = this.clone(), i = n.count(), r = new(gg(n._rawCount))(i), o = [], a = t.length, s = 0, l =
				t[0], u = n._chunks, h = 0; h < i; h++) {
			var c = void 0,
				p = n.getRawIndex(h);
			if (0 === a) c = e(h);
			else if (1 === a) c = e(u[l][p], h);
			else {
				for (var d = 0; d < a; d++) o[d] = u[t[d]][p];
				o[d] = h, c = e.apply(null, o)
			}
			c && (r[s++] = p)
		}
		return s < i && (n._indices = r), n._count = s, n._extent = [], n._updateGetRawIdx(), n
	}, l.prototype.selectRange = function(t) {
		var e = this.clone(),
			n = e._count;
		if (!n) return this;
		var i = ct(t),
			r = i.length;
		if (!r) return this;
		var o = e.count(),
			a = new(gg(e._rawCount))(o),
			s = 0,
			l = i[0],
			u = t[l][0],
			h = t[l][1],
			c = e._chunks,
			l = !1;
		if (!e._indices) {
			var p = 0;
			if (1 === r) {
				for (var d = c[i[0]], f = 0; f < n; f++)(u <= (v = d[f]) && v <= h || isNaN(v)) && (a[s++] = p),
					p++;
				l = !0
			} else if (2 === r) {
				for (var d = c[i[0]], g = c[i[1]], y = t[i[1]][0], m = t[i[1]][1], f = 0; f < n; f++) {
					var v = d[f],
						_ = g[f];
					(u <= v && v <= h || isNaN(v)) && (y <= _ && _ <= m || isNaN(_)) && (a[s++] = p), p++
				}
				l = !0
			}
		}
		if (!l)
			if (1 === r)
				for (f = 0; f < o; f++) {
					var x = e.getRawIndex(f);
					(u <= (v = c[i[0]][x]) && v <= h || isNaN(v)) && (a[s++] = x)
				} else
					for (f = 0; f < o; f++) {
						for (var b = !0, x = e.getRawIndex(f), w = 0; w < r; w++) {
							var S = i[w];
							((v = c[S][x]) < t[S][0] || v > t[S][1]) && (b = !1)
						}
						b && (a[s++] = e.getRawIndex(f))
					}
		return s < o && (e._indices = a), e._count = s, e._extent = [], e._updateGetRawIdx(), e
	}, l.prototype.map = function(t, e) {
		var n = this.clone(t);
		return this._updateDims(n, t, e), n
	}, l.prototype.modify = function(t, e) {
		this._updateDims(this, t, e)
	}, l.prototype._updateDims = function(t, e, n) {
		for (var i = t._chunks, r = [], o = e.length, a = t.count(), s = [], l = t._rawExtent, u = 0; u < e
			.length; u++) l[e[u]] = yg();
		for (var h = 0; h < a; h++) {
			for (var c = t.getRawIndex(h), p = 0; p < o; p++) s[p] = i[e[p]][c];
			s[o] = h;
			var d = n && n.apply(null, s);
			if (null != d) {
				"object" != typeof d && (r[0] = d, d = r);
				for (u = 0; u < d.length; u++) {
					var f = e[u],
						g = d[u],
						y = l[f],
						f = i[f];
					f && (f[c] = g), g < y[0] && (y[0] = g), g > y[1] && (y[1] = g)
				}
			}
		}
	}, l.prototype.lttbDownSample = function(t, e) {
		var n, i = this.clone([t], !0),
			r = i._chunks[t],
			o = this.count(),
			a = 0,
			s = Math.floor(1 / e),
			l = this.getRawIndex(0),
			u = new(gg(this._rawCount))(Math.min(2 * (Math.ceil(o / s) + 2), o));
		u[a++] = l;
		for (var h = 1; h < o - 1; h += s) {
			for (var c = Math.min(h + s, o - 1), p = Math.min(h + 2 * s, o), d = (p + c) / 2, f = 0, g = c; g <
				p; g++) {
				var y = r[M = this.getRawIndex(g)];
				isNaN(y) || (f += y)
			}
			f /= p - c;
			for (var c = h, m = Math.min(h + s, o), v = h - 1, _ = r[l], x = -1, b = c, w = -1, S = 0, g =
				c; g < m; g++) {
				var M, y = r[M = this.getRawIndex(g)];
				isNaN(y) ? (S++, w < 0 && (w = M)) : x < (n = Math.abs((v - d) * (y - _) - (v - g) * (f -
					_))) && (x = n, b = M)
			}
			0 < S && S < m - c && (u[a++] = Math.min(w, b), b = Math.max(w, b)), l = u[a++] = b
		}
		return u[a++] = this.getRawIndex(o - 1), i._count = a, i._indices = u, i.getRawIndex = this._getRawIdx,
			i
	}, l.prototype.downSample = function(t, e, n, i) {
		for (var r = this.clone([t], !0), o = r._chunks, a = [], s = Math.floor(1 / e), l = o[t], u = this
				.count(), h = r._rawExtent[t] = yg(), c = new(gg(this._rawCount))(Math.ceil(u / s)), p = 0, d =
				0; d < u; d += s) {
			u - d < s && (a.length = s = u - d);
			for (var f = 0; f < s; f++) {
				var g = this.getRawIndex(d + f);
				a[f] = l[g]
			}
			var y = n(a),
				m = this.getRawIndex(Math.min(d + i(a, y) || 0, u - 1));
			(l[m] = y) < h[0] && (h[0] = y), y > h[1] && (h[1] = y), c[p++] = m
		}
		return r._count = p, r._indices = c, r._updateGetRawIdx(), r
	}, l.prototype.each = function(t, e) {
		if (this._count)
			for (var n = t.length, i = this._chunks, r = 0, o = this.count(); r < o; r++) {
				var a = this.getRawIndex(r);
				switch (n) {
					case 0:
						e(r);
						break;
					case 1:
						e(i[t[0]][a], r);
						break;
					case 2:
						e(i[t[0]][a], i[t[1]][a], r);
						break;
					default:
						for (var s = 0, l = []; s < n; s++) l[s] = i[t[s]][a];
						l[s] = r, e.apply(null, l)
				}
			}
	}, l.prototype.getDataExtent = function(t) {
		var e = this._chunks[t],
			n = yg();
		if (!e) return n;
		var i = this.count();
		if (!this._indices) return this._rawExtent[t].slice();
		if (r = this._extent[t]) return r.slice();
		for (var r, o = (r = n)[0], a = r[1], s = 0; s < i; s++) {
			var l = e[this.getRawIndex(s)];
			l < o && (o = l), a < l && (a = l)
		}
		return this._extent[t] = r = [o, a]
	}, l.prototype.getRawDataItem = function(t) {
		var e = this.getRawIndex(t);
		if (this._provider.persistent) return this._provider.getItem(e);
		for (var n = [], i = this._chunks, r = 0; r < i.length; r++) n.push(i[r][e]);
		return n
	}, l.prototype.clone = function(t, e) {
		var n, i, r = new l,
			o = this._chunks,
			a = t && ut(t, function(t, e) {
				return t[e] = !0, t
			}, {});
		if (a)
			for (var s = 0; s < o.length; s++) r._chunks[s] = a[s] ? (n = o[s], i = void 0, (i = n
				.constructor) === Array ? n.slice() : new i(n)) : o[s];
		else r._chunks = o;
		return this._copyCommonProps(r), e || (r._indices = this._cloneIndices()), r._updateGetRawIdx(), r
	}, l.prototype._copyCommonProps = function(t) {
		t._count = this._count, t._rawCount = this._rawCount, t._provider = this._provider, t._dimensions = this
			._dimensions, t._extent = y(this._extent), t._rawExtent = y(this._rawExtent)
	}, l.prototype._cloneIndices = function() {
		if (this._indices) {
			var t = this._indices.constructor,
				e = void 0;
			if (t === Array)
				for (var n = this._indices.length, e = new t(n), i = 0; i < n; i++) e[i] = this._indices[i];
			else e = new t(this._indices);
			return e
		}
		return null
	}, l.prototype._getRawIdxIdentity = function(t) {
		return t
	}, l.prototype._getRawIdx = function(t) {
		return t < this._count && 0 <= t ? this._indices[t] : -1
	}, l.prototype._updateGetRawIdx = function() {
		this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity
	}, l.internalField = void(hg = {
		arrayRows: _g,
		objectRows: function(t, e, n, i) {
			return Xf(t[e], this._dimensions[i])
		},
		keyedColumns: _g,
		original: function(t, e, n, i) {
			t = t && (null == t.value ? t : t.value);
			return Xf(t instanceof Array ? t[i] : t, this._dimensions[i])
		},
		typedArray: function(t, e, n, i) {
			return t[i]
		}
	});
	var vg = l;

	function l() {
		this._chunks = [], this._rawExtent = [], this._extent = [], this._count = 0, this._rawCount = 0, this
			._calcDimNameToIdx = N()
	}

	function _g(t, e, n, i) {
		return Xf(t[i], this._dimensions[i])
	}
	bg.prototype.dirty = function() {
		this._setLocalSource([], []), this._storeList = [], this._dirty = !0
	}, bg.prototype._setLocalSource = function(t, e) {
		this._sourceList = t, this._upstreamSignList = e, this._versionSignBase++, 9e10 < this
			._versionSignBase && (this._versionSignBase = 0)
	}, bg.prototype._getVersionSign = function() {
		return this._sourceHost.uid + "_" + this._versionSignBase
	}, bg.prototype.prepareSource = function() {
		this._isDirty() && (this._createSource(), this._dirty = !1)
	}, bg.prototype._createSource = function() {
		this._setLocalSource([], []);
		var t, e, n, i, r, o, a, s = this._sourceHost,
			l = this._getUpstreamSourceManagers(),
			u = !!l.length;
		Sg(s) ? (i = s, r = t = o = void 0, e = u ? ((e = l[0]).prepareSource(), o = (r = e.getSource()).data,
				t = r.sourceFormat, [e._getVersionSign()]) : (t = gt(o = i.get("data", !0)) ? id : Jp, []),
			i = this._getSourceMetaRawOption() || {}, r = r && r.metaRawOption || {}, a = R(i
				.seriesLayoutBy, r.seriesLayoutBy) || null, n = R(i.sourceHeader, r.sourceHeader), i = R(i
				.dimensions, r.dimensions), r = a !== r.seriesLayoutBy || !!n != !!r.sourceHeader || i ? [
				sf(o, {
					seriesLayoutBy: a,
					sourceHeader: n,
					dimensions: i
				}, t)
			] : []) : (o = s, e = u ? (r = (a = this._applyTransform(l)).sourceList, a.upstreamSignList) : (
			r = [sf(o.get("source", !0), this._getSourceMetaRawOption(), null)], [])), this._setLocalSource(
			r, e)
	}, bg.prototype._applyTransform = function(t) {
		var e, n = this._sourceHost,
			i = n.get("transform", !0),
			r = n.get("fromTransformResult", !0),
			o = (null != r && 1 !== t.length && Mg(""), []),
			a = [];
		return E(t, function(t) {
			t.prepareSource();
			var e = t.getSource(r || 0);
			null == r || e || Mg(""), o.push(e), a.push(t._getVersionSign())
		}), i ? e = lg(i, o, n.componentIndex) : null != r && (e = [new of({
			data: (t = o[0]).data,
			sourceFormat: t.sourceFormat,
			seriesLayoutBy: t.seriesLayoutBy,
			dimensionsDefine: y(t.dimensionsDefine),
			startIndex: t.startIndex,
			dimensionsDetectedCount: t.dimensionsDetectedCount
		})]), {
			sourceList: e,
			upstreamSignList: a
		}
	}, bg.prototype._isDirty = function() {
		if (this._dirty) return !0;
		for (var t = this._getUpstreamSourceManagers(), e = 0; e < t.length; e++) {
			var n = t[e];
			if (n._isDirty() || this._upstreamSignList[e] !== n._getVersionSign()) return !0
		}
	}, bg.prototype.getSource = function(t) {
		var e = this._sourceList[t = t || 0];
		return e || (e = this._getUpstreamSourceManagers())[0] && e[0].getSource(t)
	}, bg.prototype.getSharedDataStore = function(t) {
		var e = t.makeStoreSchema();
		return this._innerGetDataStore(e.dimensions, t.source, e.hash)
	}, bg.prototype._innerGetDataStore = function(t, e, n) {
		var i, r = this._storeList,
			o = r[0],
			r = (o = o || (r[0] = {}))[n];
		return r || (i = this._getUpstreamSourceManagers()[0], Sg(this._sourceHost) && i ? r = i
			._innerGetDataStore(t, e, n) : (r = new vg).initData(new yf(e, t.length), t), o[n] = r), r
	}, bg.prototype._getUpstreamSourceManagers = function() {
		var t, e = this._sourceHost;
		return Sg(e) ? (t = cd(e)) ? [t.getSourceManager()] : [] : B((t = e).get("transform", !0) || t.get(
			"fromTransformResult", !0) ? Vo(t.ecModel, "dataset", {
			index: t.get("fromDatasetIndex", !0),
			id: t.get("fromDatasetId", !0)
		}, Fo).models : [], function(t) {
			return t.getSourceManager()
		})
	}, bg.prototype._getSourceMetaRawOption = function() {
		var t, e, n, i = this._sourceHost;
		return Sg(i) ? (t = i.get("seriesLayoutBy", !0), e = i.get("sourceHeader", !0), n = i.get("dimensions",
			!0)) : this._getUpstreamSourceManagers().length || (t = (i = i).get("seriesLayoutBy", !0), e = i
			.get("sourceHeader", !0), n = i.get("dimensions", !0)), {
			seriesLayoutBy: t,
			sourceHeader: e,
			dimensions: n
		}
	};
	var xg = bg;

	function bg(t) {
		this._sourceList = [], this._storeList = [], this._upstreamSignList = [], this._versionSignBase = 0, this
			._dirty = !0, this._sourceHost = t
	}

	function wg(t) {
		t.option.transform && Dt(t.option.transform)
	}

	function Sg(t) {
		return "series" === t.mainType
	}

	function Mg(t) {
		throw new Error(t)
	}
	var Tg = "line-height:1";

	function Ig(t, e) {
		var n = t.color || "#6e7079",
			i = t.fontSize || 12,
			r = t.fontWeight || "400",
			o = t.color || "#464646",
			a = t.fontSize || 14,
			t = t.fontWeight || "900";
		return "html" === e ? {
			nameStyle: "font-size:" + _e(i + "") + "px;color:" + _e(n) + ";font-weight:" + _e(r + ""),
			valueStyle: "font-size:" + _e(a + "") + "px;color:" + _e(o) + ";font-weight:" + _e(t + "")
		} : {
			nameStyle: {
				fontSize: i,
				fill: n,
				fontWeight: r
			},
			valueStyle: {
				fontSize: a,
				fill: o,
				fontWeight: t
			}
		}
	}
	var Cg = [0, 10, 20, 30],
		Dg = ["", "\n", "\n\n", "\n\n\n"];

	function kg(t, e) {
		return e.type = t, e
	}

	function Ag(t) {
		return "section" === t.type
	}

	function Lg(t) {
		return Ag(t) ? Pg : Og
	}

	function Pg(i, r, t, o) {
		var n, e = r.noHeader,
			a = (l = function n(t) {
				var i, e, r;
				return Ag(t) ? (i = 0, e = t.blocks.length, r = 1 < e || 0 < e && !t.noHeader, E(t.blocks,
					function(t) {
						var e = n(t);
						i <= e && (i = e + +(r && (!e || Ag(t) && !t.noHeader)))
					}), i) : 0
			}(r), {
				html: Cg[l],
				richText: Dg[l]
			}),
			s = [],
			l = r.blocks || [],
			u = (Tt(!l || F(l)), l = l || [], i.orderMode),
			h = (r.sortBlocks && u && (l = l.slice(), Bt(h = {
				valueAsc: "asc",
				valueDesc: "desc"
			}, u) ? (n = new $f(h[u], null), l.sort(function(t, e) {
				return n.evaluate(t.sortParam, e.sortParam)
			})) : "seriesDesc" === u && l.reverse()), E(l, function(t, e) {
				var n = r.valueFormatter,
					n = Lg(t)(n ? P(P({}, i), {
						valueFormatter: n
					}) : i, t, 0 < e ? a.html : 0, o);
				null != n && s.push(n)
			}), "richText" === i.renderMode ? s.join(a.richText) : Ng(s.join(""), e ? t : a.html));
		return e ? h : (u = Dp(r.header, "ordinal", i.useUTC), l = Ig(o, i.renderMode).nameStyle, "richText" === i
			.renderMode ? Eg(i, u, l) + a.richText + h : Ng('<div style="' + l + ";" + Tg + ';">' + _e(u) +
				"</div>" + h, t))
	}

	function Og(t, e, n, i) {
		var r, o, a, s, l = t.renderMode,
			u = e.noName,
			h = e.noValue,
			c = !e.markerType,
			p = e.name,
			d = t.useUTC,
			f = e.valueFormatter || t.valueFormatter || function(t) {
				return B(t = F(t) ? t : [t], function(t, e) {
					return Dp(t, F(o) ? o[e] : o, d)
				})
			};
		if (!u || !h) return r = c ? "" : t.markupStyleCreator.makeTooltipMarker(e.markerType, e.markerColor ||
				"#333", l), p = u ? "" : Dp(p, "ordinal", d), o = e.valueType, f = h ? [] : f(e.value, e
				.dataIndex), e = !c || !u, a = !c && u, i = Ig(i, l), s = i.nameStyle, i = i.valueStyle,
			"richText" === l ? (c ? "" : r) + (u ? "" : Eg(t, p, s)) + (h ? "" : function(t, e, n, i, r) {
				r = [r], i = i ? 10 : 20;
				return n && r.push({
					padding: [0, 0, 0, i],
					align: "right"
				}), t.markupStyleCreator.wrapRichTextStyle(F(e) ? e.join("  ") : e, r)
			}(t, f, e, a, i)) : Ng((c ? "" : r) + (u ? "" : '<span style="' + s + ";" + (!c ?
				"margin-left:2px" : "") + '">' + _e(p) + "</span>") + (h ? "" : function(t, e, n, i) {
				n = n ? "10px" : "20px", e = e ? "float:right;margin-left:" + n : "";
				return t = F(t) ? t : [t], '<span style="' + e + ";" + i + '">' + B(t, _e).join(
					"&nbsp;&nbsp;") + "</span>"
			}(f, e, a, i)), n)
	}

	function Rg(t, e, n, i, r, o) {
		if (t) return Lg(t)({
			useUTC: r,
			renderMode: n,
			orderMode: i,
			markupStyleCreator: e,
			valueFormatter: t.valueFormatter
		}, t, 0, o)
	}

	function Ng(t, e) {
		return '<div style="' + ("margin: " + e + "px 0 0") + ";" + Tg + ';">' + t +
			'<div style="clear:both"></div></div>'
	}

	function Eg(t, e, n) {
		return t.markupStyleCreator.wrapRichTextStyle(e, n)
	}

	function zg(t, e) {
		t = t.get("padding");
		return null != t ? t : "richText" === e ? [8, 10] : 10
	}
	Fg.prototype._generateStyleName = function() {
		return "__EC_aUTo_" + this._nextStyleNameId++
	}, Fg.prototype.makeTooltipMarker = function(t, e, n) {
		var i = "richText" === n ? this._generateStyleName() : null,
			e = Pp({
				color: e,
				type: t,
				renderMode: n,
				markerId: i
			});
		return V(e) ? e : (this.richTextStyles[i] = e.style, e.content)
	}, Fg.prototype.wrapRichTextStyle = function(t, e) {
		var n = {},
			e = (F(e) ? E(e, function(t) {
				return P(n, t)
			}) : P(n, e), this._generateStyleName());
		return this.richTextStyles[e] = n, "{" + e + "|" + t + "}"
	};
	var Bg = Fg;

	function Fg() {
		this.richTextStyles = {}, this._nextStyleNameId = _o()
	}

	function Vg(t) {
		var e, n, i, r, o, a, s, l, u, h, c, p = t.series,
			d = t.dataIndex,
			t = t.multipleSeries,
			f = p.getData(),
			g = f.mapDimensionsAll("defaultedTooltip"),
			y = g.length,
			m = p.getRawValue(d),
			v = F(m),
			_ = (_ = d, Op((b = p).getData().getItemVisual(_, "style")[b.visualDrawType]));

		function x(t, e) {
			e = s.getDimensionInfo(e);
			e && !1 !== e.otherDims.tooltip && (l ? c.push(kg("nameValue", {
				markerType: "subItem",
				markerColor: a,
				name: e.displayName,
				value: t,
				valueType: e.type
			})) : (u.push(t), h.push(e.type)))
		}
		1 < y || v && !y ? (b = m, r = d, o = g, a = _, s = p.getData(), l = ut(b, function(t, e, n) {
			n = s.getDimensionInfo(n);
			return t || n && !1 !== n.tooltip && null != n.displayName
		}, !1), u = [], h = [], c = [], o.length ? E(o, function(t) {
			x(kf(s, r, t), t)
		}) : E(b, x), e = (o = {
			inlineValues: u,
			inlineValueTypes: h,
			blocks: c
		}).inlineValueTypes, n = o.blocks, i = (o = o.inlineValues)[0]) : y ? (b = f.getDimensionInfo(g[0]), i =
			o = kf(f, d, g[0]), e = b.type) : i = o = v ? m[0] : m;
		var y = Lo(p),
			g = y && p.name || "",
			b = f.getName(d),
			v = t ? g : b;
		return kg("section", {
			header: g,
			noHeader: t || !y,
			sortParam: i,
			blocks: [kg("nameValue", {
				markerType: "item",
				markerColor: _,
				name: v,
				noName: !It(v),
				value: o,
				valueType: e,
				dataIndex: d
			})].concat(n || [])
		})
	}
	var Gg = No();

	function Hg(t, e) {
		return t.getName(e) || t.getId(e)
	}
	u(s, Wg = g), s.prototype.init = function(t, e, n) {
		this.seriesIndex = this.componentIndex, this.dataTask = Of({
			count: Yg,
			reset: qg
		}), this.dataTask.context = {
			model: this
		}, this.mergeDefaultAndTheme(t, n);
		(Gg(this).sourceManager = new xg(this)).prepareSource();
		t = this.getInitialData(t, n);
		jg(t, this), this.dataTask.context.data = t, Gg(this).dataBeforeProcessed = t, Xg(this), this
			._initSelectedMapFromData(t)
	}, s.prototype.mergeDefaultAndTheme = function(t, e) {
		var n = Gp(this),
			i = n ? Wp(t) : {},
			r = this.subType;
		g.hasClass(r), d(t, e.getTheme().get(this.subType)), d(t, this.getDefaultOption()), Mo(t, "label", [
			"show"
		]), this.fillDataTextStyle(t.data), n && Hp(t, i, n)
	}, s.prototype.mergeOption = function(t, e) {
		t = d(this.option, t, !0), this.fillDataTextStyle(t.data);
		var n = Gp(this),
			n = (n && Hp(this.option, t, n), Gg(this).sourceManager),
			n = (n.dirty(), n.prepareSource(), this.getInitialData(t, e));
		jg(n, this), this.dataTask.dirty(), this.dataTask.context.data = n, Gg(this).dataBeforeProcessed = n,
			Xg(this), this._initSelectedMapFromData(n)
	}, s.prototype.fillDataTextStyle = function(t) {
		if (t && !gt(t))
			for (var e = ["show"], n = 0; n < t.length; n++) t[n] && t[n].label && Mo(t[n], "label", e)
	}, s.prototype.getInitialData = function(t, e) {}, s.prototype.appendData = function(t) {
		this.getRawData().appendData(t.data)
	}, s.prototype.getData = function(t) {
		var e = $g(this);
		return e ? (e = e.context.data, null == t ? e : e.getLinkedData(t)) : Gg(this).data
	}, s.prototype.getAllData = function() {
		var t = this.getData();
		return t && t.getLinkedDataAll ? t.getLinkedDataAll() : [{
			data: t
		}]
	}, s.prototype.setData = function(t) {
		var e, n = $g(this);
		n && ((e = n.context).outputData = t, n !== this.dataTask) && (e.data = t), Gg(this).data = t
	}, s.prototype.getEncode = function() {
		var t = this.get("encode", !0);
		if (t) return N(t)
	}, s.prototype.getSourceManager = function() {
		return Gg(this).sourceManager
	}, s.prototype.getSource = function() {
		return this.getSourceManager().getSource()
	}, s.prototype.getRawData = function() {
		return Gg(this).dataBeforeProcessed
	}, s.prototype.getColorBy = function() {
		return this.get("colorBy") || "series"
	}, s.prototype.isColorBySeries = function() {
		return "series" === this.getColorBy()
	}, s.prototype.getBaseAxis = function() {
		var t = this.coordinateSystem;
		return t && t.getBaseAxis && t.getBaseAxis()
	}, s.prototype.formatTooltip = function(t, e, n) {
		return Vg({
			series: this,
			dataIndex: t,
			multipleSeries: e
		})
	}, s.prototype.isAnimationEnabled = function() {
		var t = this.ecModel;
		return !!(!w.node || t && t.ssr) && !!(t = (t = this.getShallow("animation")) && this.getData()
		.count() > this.getShallow("animationThreshold") ? !1 : t)
	}, s.prototype.restoreData = function() {
		this.dataTask.dirty()
	}, s.prototype.getColorFromPalette = function(t, e, n) {
		var i = this.ecModel;
		return _d.prototype.getColorFromPalette.call(this, t, e, n) || i.getColorFromPalette(t, e, n)
	}, s.prototype.coordDimToDataDim = function(t) {
		return this.getRawData().mapDimensionsAll(t)
	}, s.prototype.getProgressive = function() {
		return this.get("progressive")
	}, s.prototype.getProgressiveThreshold = function() {
		return this.get("progressiveThreshold")
	}, s.prototype.select = function(t, e) {
		this._innerSelect(this.getData(e), t)
	}, s.prototype.unselect = function(t, e) {
		var n = this.option.selectedMap;
		if (n) {
			var i = this.option.selectedMode,
				r = this.getData(e);
			if ("series" === i || "all" === n) this.option.selectedMap = {}, this._selectedDataIndicesMap = {};
			else
				for (var o = 0; o < t.length; o++) {
					var a = Hg(r, t[o]);
					n[a] = !1, this._selectedDataIndicesMap[a] = -1
				}
		}
	}, s.prototype.toggleSelect = function(t, e) {
		for (var n = [], i = 0; i < t.length; i++) n[0] = t[i], this.isSelected(t[i], e) ? this.unselect(n, e) :
			this.select(n, e)
	}, s.prototype.getSelectedDataIndices = function() {
		if ("all" === this.option.selectedMap) return [].slice.call(this.getData().getIndices());
		for (var t = this._selectedDataIndicesMap, e = ct(t), n = [], i = 0; i < e.length; i++) {
			var r = t[e[i]];
			0 <= r && n.push(r)
		}
		return n
	}, s.prototype.isSelected = function(t, e) {
		var n = this.option.selectedMap;
		return !!n && (e = this.getData(e), "all" === n || n[Hg(e, t)]) && !e.getItemModel(t).get(["select",
			"disabled"
		])
	}, s.prototype.isUniversalTransitionEnabled = function() {
		var t;
		return !!this.__universalTransitionEnabled || !!(t = this.option.universalTransition) && (!0 === t ||
			t && t.enabled)
	}, s.prototype._innerSelect = function(t, e) {
		var n = this.option,
			i = n.selectedMode,
			r = e.length;
		if (i && r)
			if ("series" === i) n.selectedMap = "all";
			else if ("multiple" === i) {
			O(n.selectedMap) || (n.selectedMap = {});
			for (var o = n.selectedMap, a = 0; a < r; a++) {
				var s, l = e[a];
				o[s = Hg(t, l)] = !0, this._selectedDataIndicesMap[s] = t.getRawIndex(l)
			}
		} else "single" !== i && !0 !== i || (s = Hg(t, i = e[r - 1]), n.selectedMap = ((n = {})[s] = !0, n),
			this._selectedDataIndicesMap = ((n = {})[s] = t.getRawIndex(i), n))
	}, s.prototype._initSelectedMapFromData = function(n) {
		var i;
		this.option.selectedMap || (i = [], n.hasItemOption && n.each(function(t) {
			var e = n.getRawDataItem(t);
			e && e.selected && i.push(t)
		}), 0 < i.length && this._innerSelect(n, i))
	}, s.registerClass = function(t) {
		return g.registerClass(t)
	}, s.protoInitialize = ((Oc = s.prototype).type = "series.__base__", Oc.seriesIndex = 0, Oc
		.ignoreStyleOnData = !1, Oc.hasSymbolVisual = !1, Oc.defaultSymbol = "circle", Oc
		.visualStyleAccessPath = "itemStyle", void(Oc.visualDrawType = "fill"));
	var Wg, Ug = s;

	function s() {
		var t = null !== Wg && Wg.apply(this, arguments) || this;
		return t._selectedDataIndicesMap = {}, t
	}

	function Xg(t) {
		var e, n, i = t.name;
		Lo(t) || (t.name = (t = (e = (t = t).getRawData()).mapDimensionsAll("seriesName"), n = [], E(t, function(
		t) {
			t = e.getDimensionInfo(t);
			t.displayName && n.push(t.displayName)
		}), n.join(" ") || i))
	}

	function Yg(t) {
		return t.model.getRawData().count()
	}

	function qg(t) {
		t = t.model;
		return t.setData(t.getRawData().cloneShallow()), Zg
	}

	function Zg(t, e) {
		e.outputData && t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData)
	}

	function jg(e, n) {
		E(Nt(e.CHANGABLE_METHODS, e.DOWNSAMPLE_METHODS), function(t) {
			e.wrapMethod(t, S(Kg, n))
		})
	}

	function Kg(t, e) {
		t = $g(t);
		return t && t.setOutputEnd((e || this).count()), e
	}

	function $g(t) {
		var e, n = (t.ecModel || {}).scheduler,
			n = n && n.getPipeline(t.uid);
		if (n) return (n = n.currentTask) && (e = n.agentStubMap) ? e.get(t.uid) : n
	}
	st(Ug, zc), st(Ug, _d), Zo(Ug, g);
	Jg.prototype.init = function(t, e) {}, Jg.prototype.render = function(t, e, n, i) {}, Jg.prototype.dispose =
		function(t, e) {}, Jg.prototype.updateView = function(t, e, n, i) {}, Jg.prototype.updateLayout = function(
			t, e, n, i) {}, Jg.prototype.updateVisual = function(t, e, n, i) {}, Jg.prototype.toggleBlurSeries =
		function(t, e, n) {}, Jg.prototype.eachRendered = function(t) {
			var e = this.group;
			e && e.traverse(t)
		};
	var Qg = Jg;

	function Jg() {
		this.group = new Ur, this.uid = Wc("viewComponent")
	}

	function ty() {
		var o = No();
		return function(t) {
			var e = o(t),
				t = t.pipelineContext,
				n = !!e.large,
				i = !!e.progressiveRender,
				r = e.large = !(!t || !t.large),
				e = e.progressiveRender = !(!t || !t.progressiveRender);
			return !(n == r && i == e) && "reset"
		}
	}
	qo(Qg), Qo(Qg);
	var ey = No(),
		ny = ty(),
		iy = (ry.prototype.init = function(t, e) {}, ry.prototype.render = function(t, e, n, i) {}, ry.prototype
			.highlight = function(t, e, n, i) {
				t = t.getData(i && i.dataType);
				t && ay(t, i, "emphasis")
			}, ry.prototype.downplay = function(t, e, n, i) {
				t = t.getData(i && i.dataType);
				t && ay(t, i, "normal")
			}, ry.prototype.remove = function(t, e) {
				this.group.removeAll()
			}, ry.prototype.dispose = function(t, e) {}, ry.prototype.updateView = function(t, e, n, i) {
				this.render(t, e, n, i)
			}, ry.prototype.updateLayout = function(t, e, n, i) {
				this.render(t, e, n, i)
			}, ry.prototype.updateVisual = function(t, e, n, i) {
				this.render(t, e, n, i)
			}, ry.prototype.eachRendered = function(t) {
				pc(this.group, t)
			}, ry.markUpdateMethod = function(t, e) {
				ey(t).updateMethod = e
			}, ry.protoInitialize = void(ry.prototype.type = "chart"), ry);

	function ry() {
		this.group = new Ur, this.uid = Wc("viewChart"), this.renderTask = Of({
			plan: sy,
			reset: ly
		}), this.renderTask.context = {
			view: this
		}
	}

	function oy(t, e, n) {
		t && Yl(t) && ("emphasis" === e ? Dl : kl)(t, n)
	}

	function ay(e, t, n) {
		var i, r = Ro(e, t),
			o = t && null != t.highlightKey ? (t = t.highlightKey, i = null == (i = Js[t]) && Qs <= 32 ? Js[t] =
				Qs++ : i) : null;
		null != r ? E(So(r), function(t) {
			oy(e.getItemGraphicEl(t), n, o)
		}) : e.eachItemGraphicEl(function(t) {
			oy(t, n, o)
		})
	}

	function sy(t) {
		return ny(t.model)
	}

	function ly(t) {
		var e = t.model,
			n = t.ecModel,
			i = t.api,
			r = t.payload,
			o = e.pipelineContext.progressiveRender,
			t = t.view,
			a = r && ey(r).updateMethod,
			o = o ? "incrementalPrepareRender" : a && t[a] ? a : "render";
		return "render" !== o && t[o](e, n, i, r), uy[o]
	}
	qo(iy), Qo(iy);
	var uy = {
			incrementalPrepareRender: {
				progress: function(t, e) {
					e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload)
				}
			},
			render: {
				forceFirstProgress: !0,
				progress: function(t, e) {
					e.view.render(e.model, e.ecModel, e.api, e.payload)
				}
			}
		},
		hy = "\0__throttleOriginMethod",
		cy = "\0__throttleRate",
		py = "\0__throttleType";

	function dy(t, r, o) {
		var a, s, l, u, h, c = 0,
			p = 0,
			d = null;

		function f() {
			p = (new Date).getTime(), d = null, t.apply(l, u || [])
		}
		r = r || 0;

		function e() {
			for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
			a = (new Date).getTime(), l = this, u = t;
			var n = h || r,
				i = h || o;
			h = null, s = a - (i ? c : p) - n, clearTimeout(d), i ? d = setTimeout(f, n) : 0 <= s ? f() : d =
				setTimeout(f, -s), c = a
		}
		return e.clear = function() {
			d && (clearTimeout(d), d = null)
		}, e.debounceNextCall = function(t) {
			h = t
		}, e
	}

	function fy(t, e, n, i) {
		var r = t[e];
		if (r) {
			var o = r[hy] || r,
				a = r[py];
			if (r[cy] !== n || a !== i) {
				if (null == n || !i) return t[e] = o;
				(r = t[e] = dy(o, n, "debounce" === i))[hy] = o, r[py] = i, r[cy] = n
			}
		}
	}

	function gy(t, e) {
		var n = t[e];
		n && n[hy] && (n.clear && n.clear(), t[e] = n[hy])
	}
	var yy = No(),
		my = {
			itemStyle: Jo(Nc, !0),
			lineStyle: Jo(Lc, !0)
		},
		vy = {
			lineStyle: "stroke",
			itemStyle: "fill"
		};

	function _y(t, e) {
		t = t.visualStyleMapper || my[e];
		return t || (console.warn("Unknown style type '" + e + "'."), my.itemStyle)
	}

	function xy(t, e) {
		t = t.visualDrawType || vy[e];
		return t || (console.warn("Unknown style type '" + e + "'."), "fill")
	}
	var ea = {
			createOnAllSeries: !0,
			performRawSeries: !0,
			reset: function(r, t) {
				var e = r.getData(),
					n = r.visualStyleAccessPath || "itemStyle",
					i = r.getModel(n),
					o = _y(r, n)(i),
					i = i.getShallow("decal"),
					a = (i && (e.setVisual("decal", i), i.dirty = !0), xy(r, n)),
					i = o[a],
					s = D(i) ? i : null,
					n = "auto" === o.fill || "auto" === o.stroke;
				if (o[a] && !s && !n || (i = r.getColorFromPalette(r.name, null, t.getSeriesCount()), o[a] || (
						o[a] = i, e.setVisual("colorFromPalette", !0)), o.fill = "auto" === o.fill || D(o
						.fill) ? i : o.fill, o.stroke = "auto" === o.stroke || D(o.stroke) ? i : o.stroke), e
					.setVisual("style", o), e.setVisual("drawType", a), !t.isSeriesFiltered(r) && s) return e
					.setVisual("colorFromPalette", !1), {
						dataEach: function(t, e) {
							var n = r.getDataParams(e),
								i = P({}, o);
							i[a] = s(n), t.setItemVisual(e, "style", i)
						}
					}
			}
		},
		by = new Vc,
		ec = {
			createOnAllSeries: !0,
			performRawSeries: !0,
			reset: function(t, e) {
				var i, r, o;
				if (!t.ignoreStyleOnData && !e.isSeriesFiltered(t)) return e = t.getData(), i = t
					.visualStyleAccessPath || "itemStyle", r = _y(t, i), o = e.getVisual("drawType"), {
						dataEach: e.hasItemOption ? function(t, e) {
							var n = t.getRawDataItem(e);
							n && n[i] && (by.option = n[i], n = r(by), P(t.ensureUniqueItemVisual(e,
									"style"), n), by.option.decal && (t.setItemVisual(e, "decal", by
									.option.decal), by.option.decal.dirty = !0), o in n) && t
								.setItemVisual(e, "colorFromPalette", !1)
						} : null
					}
			}
		},
		ip = {
			performRawSeries: !0,
			overallReset: function(e) {
				var i = N();
				e.eachSeries(function(t) {
					var e, n = t.getColorBy();
					t.isColorBySeries() || (n = t.type + "-" + n, (e = i.get(n)) || i.set(n, e = {}),
						yy(t).scope = e)
				}), e.eachSeries(function(i) {
					var r, o, a, s, t, l;
					i.isColorBySeries() || e.isSeriesFiltered(i) || (r = i.getRawData(), o = {}, a = i
						.getData(), s = yy(i).scope, t = i.visualStyleAccessPath || "itemStyle", l =
						xy(i, t), a.each(function(t) {
							var e = a.getRawIndex(t);
							o[e] = t
						}), r.each(function(t) {
							var e, n = o[t];
							a.getItemVisual(n, "colorFromPalette") && (n = a
								.ensureUniqueItemVisual(n, "style"), t = r.getName(t) || t +
								"", e = r.count(), n[l] = i.getColorFromPalette(t, s, e))
						}))
				})
			}
		},
		wy = Math.PI;
	My.prototype.restoreData = function(t, e) {
		t.restoreData(e), this._stageTaskMap.each(function(t) {
			t = t.overallTask;
			t && t.dirty()
		})
	}, My.prototype.getPerformArgs = function(t, e) {
		var n, i;
		if (t.__pipeline) return i = (n = this._pipelineMap.get(t.__pipeline.id)).context, {
			step: e = !e && n.progressiveEnabled && (!i || i.progressiveRender) && t.__idxInPipeline > n
				.blockIndex ? n.step : null,
			modBy: null != (t = i && i.modDataCount) ? Math.ceil(t / e) : null,
			modDataCount: t
		}
	}, My.prototype.getPipeline = function(t) {
		return this._pipelineMap.get(t)
	}, My.prototype.updateStreamModes = function(t, e) {
		var n = this._pipelineMap.get(t.uid),
			i = t.getData().count(),
			e = n.progressiveEnabled && e.incrementalPrepareRender && i >= n.threshold,
			r = t.get("large") && i >= t.get("largeThreshold"),
			i = "mod" === t.get("progressiveChunkMode") ? i : null;
		t.pipelineContext = n.context = {
			progressiveRender: e,
			modDataCount: i,
			large: r
		}
	}, My.prototype.restorePipelines = function(t) {
		var i = this,
			r = i._pipelineMap = N();
		t.eachSeries(function(t) {
			var e = t.getProgressive(),
				n = t.uid;
			r.set(n, {
				id: n,
				head: null,
				tail: null,
				threshold: t.getProgressiveThreshold(),
				progressiveEnabled: e && !(t.preventIncremental && t.preventIncremental()),
				blockIndex: -1,
				step: Math.round(e || 700),
				count: 0
			}), i._pipe(t, t.dataTask)
		})
	}, My.prototype.prepareStageTasks = function() {
		var n = this._stageTaskMap,
			i = this.api.getModel(),
			r = this.api;
		E(this._allHandlers, function(t) {
			var e = n.get(t.uid) || n.set(t.uid, {});
			Tt(!(t.reset && t.overallReset), ""), t.reset && this._createSeriesStageTask(t, e, i, r), t
				.overallReset && this._createOverallStageTask(t, e, i, r)
		}, this)
	}, My.prototype.prepareView = function(t, e, n, i) {
		var r = t.renderTask,
			o = r.context;
		o.model = e, o.ecModel = n, o.api = i, r.__block = !t.incrementalPrepareRender, this._pipe(e, r)
	}, My.prototype.performDataProcessorTasks = function(t, e) {
		this._performStageTasks(this._dataProcessorHandlers, t, e, {
			block: !0
		})
	}, My.prototype.performVisualTasks = function(t, e, n) {
		this._performStageTasks(this._visualHandlers, t, e, n)
	}, My.prototype._performStageTasks = function(t, s, l, u) {
		u = u || {};
		var h = !1,
			c = this;

		function p(t, e) {
			return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id))
		}
		E(t, function(i, t) {
			var e, n, r, o, a;
			u.visualType && u.visualType !== i.visualType || (e = (n = c._stageTaskMap.get(i.uid))
				.seriesTaskMap, (n = n.overallTask) ? ((o = n.agentStubMap).each(function(t) {
						p(u, t) && (t.dirty(), r = !0)
					}), r && n.dirty(), c.updatePayload(n, l), a = c.getPerformArgs(n, u.block), o
					.each(function(t) {
						t.perform(a)
					}), n.perform(a) && (h = !0)) : e && e.each(function(t, e) {
					p(u, t) && t.dirty();
					var n = c.getPerformArgs(t, u.block);
					n.skip = !i.performRawSeries && s.isSeriesFiltered(t.context.model), c
						.updatePayload(t, l), t.perform(n) && (h = !0)
				}))
		}), this.unfinished = h || this.unfinished
	}, My.prototype.performSeriesTasks = function(t) {
		var e;
		t.eachSeries(function(t) {
			e = t.dataTask.perform() || e
		}), this.unfinished = e || this.unfinished
	}, My.prototype.plan = function() {
		this._pipelineMap.each(function(t) {
			var e = t.tail;
			do {
				if (e.__block) {
					t.blockIndex = e.__idxInPipeline;
					break
				}
			} while (e = e.getUpstream())
		})
	}, My.prototype.updatePayload = function(t, e) {
		"remain" !== e && (t.context.payload = e)
	}, My.prototype._createSeriesStageTask = function(n, t, i, r) {
		var o = this,
			a = t.seriesTaskMap,
			s = t.seriesTaskMap = N(),
			t = n.seriesType,
			e = n.getTargetSeries;

		function l(t) {
			var e = t.uid,
				e = s.set(e, a && a.get(e) || Of({
					plan: ky,
					reset: Ay,
					count: Oy
				}));
			e.context = {
				model: t,
				ecModel: i,
				api: r,
				useClearVisual: n.isVisual && !n.isLayout,
				plan: n.plan,
				reset: n.reset,
				scheduler: o
			}, o._pipe(t, e)
		}
		n.createOnAllSeries ? i.eachRawSeries(l) : t ? i.eachRawSeriesByType(t, l) : e && e(i, r).each(l)
	}, My.prototype._createOverallStageTask = function(t, e, n, i) {
		var r = this,
			o = e.overallTask = e.overallTask || Of({
				reset: Ty
			}),
			a = (o.context = {
				ecModel: n,
				api: i,
				overallReset: t.overallReset,
				scheduler: r
			}, o.agentStubMap),
			s = o.agentStubMap = N(),
			e = t.seriesType,
			l = t.getTargetSeries,
			u = !0,
			h = !1;

		function c(t) {
			var e = t.uid,
				e = s.set(e, a && a.get(e) || (h = !0, Of({
					reset: Iy,
					onDirty: Dy
				})));
			e.context = {
				model: t,
				overallProgress: u
			}, e.agent = o, e.__block = u, r._pipe(t, e)
		}
		Tt(!t.createOnAllSeries, ""), e ? n.eachRawSeriesByType(e, c) : l ? l(n, i).each(c) : (u = !1, E(n
			.getSeries(), c)), h && o.dirty()
	}, My.prototype._pipe = function(t, e) {
		t = t.uid, t = this._pipelineMap.get(t);
		t.head || (t.head = e), t.tail && t.tail.pipe(e), (t.tail = e).__idxInPipeline = t.count++, e
			.__pipeline = t
	}, My.wrapStageHandler = function(t, e) {
		return (t = D(t) ? {
			overallReset: t,
			seriesType: function(t) {
				Ry = null;
				try {
					t(Ny, Ey)
				} catch (t) {}
				return Ry
			}(t)
		} : t).uid = Wc("stageHandler"), e && (t.visualType = e), t
	};
	var Sy = My;

	function My(t, e, n, i) {
		this._stageTaskMap = N(), this.ecInstance = t, this.api = e, n = this._dataProcessorHandlers = n.slice(),
			i = this._visualHandlers = i.slice(), this._allHandlers = n.concat(i)
	}

	function Ty(t) {
		t.overallReset(t.ecModel, t.api, t.payload)
	}

	function Iy(t) {
		return t.overallProgress && Cy
	}

	function Cy() {
		this.agent.dirty(), this.getDownstream().dirty()
	}

	function Dy() {
		this.agent && this.agent.dirty()
	}

	function ky(t) {
		return t.plan ? t.plan(t.model, t.ecModel, t.api, t.payload) : null
	}

	function Ay(t) {
		t.useClearVisual && t.data.clearAllVisual();
		t = t.resetDefines = So(t.reset(t.model, t.ecModel, t.api, t.payload));
		return 1 < t.length ? B(t, function(t, e) {
			return Py(e)
		}) : Ly
	}
	var Ly = Py(0);

	function Py(o) {
		return function(t, e) {
			var n = e.data,
				i = e.resetDefines[o];
			if (i && i.dataEach)
				for (var r = t.start; r < t.end; r++) i.dataEach(n, r);
			else i && i.progress && i.progress(t, n)
		}
	}

	function Oy(t) {
		return t.data.count()
	}
	var Ry, Ny = {},
		Ey = {};

	function zy(t, e) {
		for (var n in e.prototype) t[n] = Ft
	}
	zy(Ny, Md), zy(Ey, Dd), Ny.eachSeriesByType = Ny.eachRawSeriesByType = function(t) {
		Ry = t
	}, Ny.eachComponent = function(t) {
		"series" === t.mainType && t.subType && (Ry = t.subType)
	};

	function By() {
		return {
			axisLine: {
				lineStyle: {
					color: Fy
				}
			},
			splitLine: {
				lineStyle: {
					color: "#484753"
				}
			},
			splitArea: {
				areaStyle: {
					color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"]
				}
			},
			minorSplitLine: {
				lineStyle: {
					color: "#20203B"
				}
			}
		}
	}
	var Oc = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1",
			"#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"
		],
		Nc = {
			color: Oc,
			colorLayer: [
				["#37A2DA", "#ffd85c", "#fd7b5f"],
				["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"],
				["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA",
					"#96BFFF"
				], Oc
			]
		},
		Fy = "#B9B8CE",
		Lc = "#100C2A",
		Oc = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"],
		Lc = {
			darkMode: !0,
			color: Oc,
			backgroundColor: Lc,
			axisPointer: {
				lineStyle: {
					color: "#817f91"
				},
				crossStyle: {
					color: "#817f91"
				},
				label: {
					color: "#fff"
				}
			},
			legend: {
				textStyle: {
					color: Fy
				}
			},
			textStyle: {
				color: Fy
			},
			title: {
				textStyle: {
					color: "#EEF1FA"
				},
				subtextStyle: {
					color: "#B9B8CE"
				}
			},
			toolbox: {
				iconStyle: {
					borderColor: Fy
				}
			},
			dataZoom: {
				borderColor: "#71708A",
				textStyle: {
					color: Fy
				},
				brushStyle: {
					color: "rgba(135,163,206,0.3)"
				},
				handleStyle: {
					color: "#353450",
					borderColor: "#C5CBE3"
				},
				moveHandleStyle: {
					color: "#B0B6C3",
					opacity: .3
				},
				fillerColor: "rgba(135,163,206,0.2)",
				emphasis: {
					handleStyle: {
						borderColor: "#91B7F2",
						color: "#4D587D"
					},
					moveHandleStyle: {
						color: "#636D9A",
						opacity: .7
					}
				},
				dataBackground: {
					lineStyle: {
						color: "#71708A",
						width: 1
					},
					areaStyle: {
						color: "#71708A"
					}
				},
				selectedDataBackground: {
					lineStyle: {
						color: "#87A3CE"
					},
					areaStyle: {
						color: "#87A3CE"
					}
				}
			},
			visualMap: {
				textStyle: {
					color: Fy
				}
			},
			timeline: {
				lineStyle: {
					color: Fy
				},
				label: {
					color: Fy
				},
				controlStyle: {
					color: Fy,
					borderColor: Fy
				}
			},
			calendar: {
				itemStyle: {
					color: Lc
				},
				dayLabel: {
					color: Fy
				},
				monthLabel: {
					color: Fy
				},
				yearLabel: {
					color: Fy
				}
			},
			timeAxis: By(),
			logAxis: By(),
			valueAxis: By(),
			categoryAxis: By(),
			line: {
				symbol: "circle"
			},
			graph: {
				color: Oc
			},
			gauge: {
				title: {
					color: Fy
				},
				axisLine: {
					lineStyle: {
						color: [
							[1, "rgba(207,212,219,0.2)"]
						]
					}
				},
				axisLabel: {
					color: Fy
				},
				detail: {
					color: "#EEF1FA"
				}
			},
			candlestick: {
				itemStyle: {
					color: "#f64e56",
					color0: "#54ea92",
					borderColor: "#f64e56",
					borderColor0: "#54ea92"
				}
			}
		},
		Vy = (Lc.categoryAxis.splitLine.show = !1, Gy.prototype.normalizeQuery = function(t) {
			var e, a, s, l = {},
				u = {},
				h = {};
			return V(t) ? (e = Yo(t), l.mainType = e.main || null, l.subType = e.sub || null) : (a = ["Index",
				"Name", "Id"
			], s = {
				name: 1,
				dataIndex: 1,
				dataType: 1
			}, E(t, function(t, e) {
				for (var n = !1, i = 0; i < a.length; i++) {
					var r = a[i],
						o = e.lastIndexOf(r);
					0 < o && o === e.length - r.length && "data" !== (o = e.slice(0, o)) && (l
						.mainType = o, l[r.toLowerCase()] = t, n = !0)
				}
				s.hasOwnProperty(e) && (u[e] = t, n = !0), n || (h[e] = t)
			})), {
				cptQuery: l,
				dataQuery: u,
				otherQuery: h
			}
		}, Gy.prototype.filter = function(t, e) {
			var n, i, r, o, a, s = this.eventInfo;
			return !s || (n = s.targetEl, i = s.packedEvent, r = s.model, s = s.view, !r) || !s || (o = e
				.cptQuery, a = e.dataQuery, l(o, r, "mainType") && l(o, r, "subType") && l(o, r, "index",
					"componentIndex") && l(o, r, "name") && l(o, r, "id") && l(a, i, "name") && l(a, i,
					"dataIndex") && l(a, i, "dataType") && (!s.filterForExposedEvent || s
					.filterForExposedEvent(t, e.otherQuery, n, i)));

			function l(t, e, n, i) {
				return null == t[n] || e[i || n] === t[n]
			}
		}, Gy.prototype.afterTrigger = function() {
			this.eventInfo = null
		}, Gy);

	function Gy() {}
	var Hy = ["symbol", "symbolSize", "symbolRotate", "symbolOffset"],
		Wy = Hy.concat(["symbolKeepAspect"]),
		Oc = {
			createOnAllSeries: !0,
			performRawSeries: !0,
			reset: function(a, t) {
				var e = a.getData();
				if (a.legendIcon && e.setVisual("legendIcon", a.legendIcon), a.hasSymbolVisual) {
					for (var s, n = {}, l = {}, i = !1, r = 0; r < Hy.length; r++) {
						var o = Hy[r],
							u = a.get(o);
						D(u) ? (i = !0, l[o] = u) : n[o] = u
					}
					if (n.symbol = n.symbol || a.defaultSymbol, e.setVisual(P({
							legendIcon: a.legendIcon || n.symbol,
							symbolKeepAspect: a.get("symbolKeepAspect")
						}, n)), !t.isSeriesFiltered(a)) return s = ct(l), {
						dataEach: i ? function(t, e) {
							for (var n = a.getRawValue(e), i = a.getDataParams(e), r = 0; r < s
								.length; r++) {
								var o = s[r];
								t.setItemVisual(e, o, l[o](n, i))
							}
						} : null
					}
				}
			}
		},
		Uy = {
			createOnAllSeries: !0,
			performRawSeries: !0,
			reset: function(t, e) {
				if (t.hasSymbolVisual && !e.isSeriesFiltered(t)) return {
					dataEach: t.getData().hasItemOption ? function(t, e) {
						for (var n = t.getItemModel(e), i = 0; i < Wy.length; i++) {
							var r = Wy[i],
								o = n.getShallow(r, !0);
							null != o && t.setItemVisual(e, r, o)
						}
					} : null
				}
			}
		};

	function Xy(t, e) {
		switch (e) {
			case "color":
				return t.getVisual("style")[t.getVisual("drawType")];
			case "opacity":
				return t.getVisual("style").opacity;
			case "symbol":
			case "symbolSize":
			case "liftZ":
				return t.getVisual(e)
		}
	}

	function Yy(o, t) {
		E([
			[o + "ToggleSelect", "toggleSelect"],
			[o + "Select", "select"],
			[o + "UnSelect", "unselect"]
		], function(r) {
			t(r[0], function(t, e, n) {
				var i;
				t = P({}, t), n.dispatchAction(P(t, {
					type: r[1],
					seriesIndex: (n = t, i = [], e.eachComponent({
						mainType: "series",
						subType: o,
						query: n
					}, function(t) {
						i.push(t.seriesIndex)
					}), i)
				}))
			})
		})
	}

	function qy(t, e, s, n, l) {
		var u = t + e;
		s.isSilent(u) || n.eachComponent({
			mainType: "series",
			subType: "pie"
		}, function(t) {
			for (var e, n, i = t.seriesIndex, r = t.option.selectedMap, o = l.selected, a = 0; a < o
				.length; a++) o[a].seriesIndex === i && (n = Ro(e = t.getData(), l.fromActionPayload), s
				.trigger(u, {
					type: u,
					seriesId: t.id,
					name: F(n) ? e.getName(n[0]) : e.getName(n),
					selected: V(r) ? r : P({}, r)
				}))
		})
	}

	function Zy(t, e, n) {
		for (var i; t && (!e(t) || (i = t, !n));) t = t.__hostTarget || t.parent;
		return i
	}
	var jy = Math.round(9 * Math.random()),
		Ky = "function" == typeof Object.defineProperty,
		$y = (Qy.prototype.get = function(t) {
			return this._guard(t)[this._id]
		}, Qy.prototype.set = function(t, e) {
			t = this._guard(t);
			return Ky ? Object.defineProperty(t, this._id, {
				value: e,
				enumerable: !1,
				configurable: !0
			}) : t[this._id] = e, this
		}, Qy.prototype.delete = function(t) {
			return !!this.has(t) && (delete this._guard(t)[this._id], !0)
		}, Qy.prototype.has = function(t) {
			return !!this._guard(t)[this._id]
		}, Qy.prototype._guard = function(t) {
			if (t !== Object(t)) throw TypeError("Value of WeakMap is not a non-null object.");
			return t
		}, Qy);

	function Qy() {
		this._id = "__ec_inner_" + jy++
	}
	var Jy = j.extend({
			type: "triangle",
			shape: {
				cx: 0,
				cy: 0,
				width: 0,
				height: 0
			},
			buildPath: function(t, e) {
				var n = e.cx,
					i = e.cy,
					r = e.width / 2,
					e = e.height / 2;
				t.moveTo(n, i - e), t.lineTo(n + r, i + e), t.lineTo(n - r, i + e), t.closePath()
			}
		}),
		tm = j.extend({
			type: "diamond",
			shape: {
				cx: 0,
				cy: 0,
				width: 0,
				height: 0
			},
			buildPath: function(t, e) {
				var n = e.cx,
					i = e.cy,
					r = e.width / 2,
					e = e.height / 2;
				t.moveTo(n, i - e), t.lineTo(n + r, i), t.lineTo(n, i + e), t.lineTo(n - r, i), t
				.closePath()
			}
		}),
		em = j.extend({
			type: "pin",
			shape: {
				x: 0,
				y: 0,
				width: 0,
				height: 0
			},
			buildPath: function(t, e) {
				var n = e.x,
					i = e.y,
					r = e.width / 5 * 3,
					e = Math.max(r, e.height),
					r = r / 2,
					o = r * r / (e - r),
					e = i - e + r + o,
					a = Math.asin(o / r),
					s = Math.cos(a) * r,
					l = Math.sin(a),
					u = Math.cos(a),
					h = .6 * r,
					c = .7 * r;
				t.moveTo(n - s, e + o), t.arc(n, e, r, Math.PI - a, 2 * Math.PI + a), t.bezierCurveTo(n +
					s - l * h, e + o + u * h, n, i - c, n, i), t.bezierCurveTo(n, i - c, n - s + l * h,
					e + o + u * h, n - s, e + o), t.closePath()
			}
		}),
		nm = j.extend({
			type: "arrow",
			shape: {
				x: 0,
				y: 0,
				width: 0,
				height: 0
			},
			buildPath: function(t, e) {
				var n = e.height,
					i = e.width,
					r = e.x,
					e = e.y,
					i = i / 3 * 2;
				t.moveTo(r, e), t.lineTo(r + i, e + n), t.lineTo(r, e + n / 4 * 3), t.lineTo(r - i, e + n),
					t.lineTo(r, e), t.closePath()
			}
		}),
		im = {
			line: function(t, e, n, i, r) {
				r.x1 = t, r.y1 = e + i / 2, r.x2 = t + n, r.y2 = e + i / 2
			},
			rect: function(t, e, n, i, r) {
				r.x = t, r.y = e, r.width = n, r.height = i
			},
			roundRect: function(t, e, n, i, r) {
				r.x = t, r.y = e, r.width = n, r.height = i, r.r = Math.min(n, i) / 4
			},
			square: function(t, e, n, i, r) {
				n = Math.min(n, i);
				r.x = t, r.y = e, r.width = n, r.height = n
			},
			circle: function(t, e, n, i, r) {
				r.cx = t + n / 2, r.cy = e + i / 2, r.r = Math.min(n, i) / 2
			},
			diamond: function(t, e, n, i, r) {
				r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i
			},
			pin: function(t, e, n, i, r) {
				r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i
			},
			arrow: function(t, e, n, i, r) {
				r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i
			},
			triangle: function(t, e, n, i, r) {
				r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i
			}
		},
		rm = {},
		om = (E({
			line: eh,
			rect: Ns,
			roundRect: Ns,
			square: Ns,
			circle: yu,
			diamond: tm,
			pin: em,
			arrow: nm,
			triangle: Jy
		}, function(t, e) {
			rm[e] = new t
		}), j.extend({
			type: "symbol",
			shape: {
				symbolType: "",
				x: 0,
				y: 0,
				width: 0,
				height: 0
			},
			calculateTextPosition: function(t, e, n) {
				var t = Lr(t, e, n),
					i = this.shape;
				return i && "pin" === i.symbolType && "inside" === e.position && (t.y = n.y + .4 * n
					.height), t
			},
			buildPath: function(t, e, n) {
				var i, r = e.symbolType;
				"none" !== r && (i = (i = rm[r]) || rm[r = "rect"], im[r](e.x, e.y, e.width, e.height, i
					.shape), i.buildPath(t, i.shape, n))
			}
		}));

	function am(t, e) {
		var n;
		"image" !== this.type && (n = this.style, this.__isEmptyBrush ? (n.stroke = t, n.fill = e || "#fff", n
			.lineWidth = 2) : "line" === this.shape.symbolType ? n.stroke = t : n.fill = t, this
		.markRedraw())
	}

	function sm(t, e, n, i, r, o, a) {
		var s = 0 === t.indexOf("empty");
		return (a = 0 === (t = s ? t.substr(5, 1).toLowerCase() + t.substr(6) : t).indexOf("image://") ? Kh(t.slice(
			8), new X(e, n, i, r), a ? "center" : "cover") : 0 === t.indexOf("path://") ? jh(t.slice(7), {},
			new X(e, n, i, r), a ? "center" : "cover") : new om({
			shape: {
				symbolType: t,
				x: e,
				y: n,
				width: i,
				height: r
			}
		})).__isEmptyBrush = s, a.setColor = am, o && a.setColor(o), a
	}

	function lm(t) {
		return [(t = F(t) ? t : [+t, +t])[0] || 0, t[1] || 0]
	}

	function um(t, e) {
		if (null != t) return [W((t = F(t) ? t : [t, t])[0], e[0]) || 0, W(R(t[1], t[0]), e[1]) || 0]
	}

	function hm(t) {
		return isFinite(t)
	}

	function cm(t, e, n) {
		for (var i, r, o, a, s, l, u, h, c, p = "radial" === e.type ? (i = t, r = e, a = (o = n).width, s = o
				.height, l = Math.min(a, s), u = null == r.x ? .5 : r.x, h = null == r.y ? .5 : r.y, c = null ==
				r.r ? .5 : r.r, r.global || (u = u * a + o.x, h = h * s + o.y, c *= l), u = hm(u) ? u : .5, h =
				hm(h) ? h : .5, c = 0 <= c && hm(c) ? c : .5, i.createRadialGradient(u, h, 0, u, h, c)) : (r =
				t, a = n, o = null == (s = e).x ? 0 : s.x, l = null == s.x2 ? 1 : s.x2, i = null == s.y ? 0 : s
				.y, u = null == s.y2 ? 0 : s.y2, s.global || (o = o * a.width + a.x, l = l * a.width + a.x, i =
					i * a.height + a.y, u = u * a.height + a.y), o = hm(o) ? o : 0, l = hm(l) ? l : 1, i = hm(
				i) ? i : 0, u = hm(u) ? u : 0, r.createLinearGradient(o, i, l, u)), d = e.colorStops, f = 0; f < d
			.length; f++) p.addColorStop(d[f].offset, d[f].color);
		return p
	}

	function pm(t) {
		return parseInt(t, 10)
	}

	function dm(t, e, n) {
		var i = ["width", "height"][e],
			r = ["clientWidth", "clientHeight"][e],
			o = ["paddingLeft", "paddingTop"][e],
			e = ["paddingRight", "paddingBottom"][e];
		return null != n[i] && "auto" !== n[i] ? parseFloat(n[i]) : (n = document.defaultView.getComputedStyle(t), (
			t[r] || pm(n[i]) || pm(t.style[i])) - (pm(n[o]) || 0) - (pm(n[e]) || 0) | 0)
	}

	function fm(t) {
		var e, n = t.style,
			i = n.lineDash && 0 < n.lineWidth && (r = n.lineDash, i = n.lineWidth, r && "solid" !== r && 0 < i ?
				"dashed" === r ? [4 * i, 2 * i] : "dotted" === r ? [i] : G(r) ? [r] : F(r) ? r : null : null),
			r = n.lineDashOffset;
		return i && (e = n.strokeNoScale && t.getLineScale ? t.getLineScale() : 1) && 1 !== e && (i = B(i, function(
			t) {
			return t / e
		}), r /= e), [i, r]
	}
	var gm = new es(!0);

	function ym(t) {
		var e = t.stroke;
		return !(null == e || "none" === e || !(0 < t.lineWidth))
	}

	function mm(t) {
		return "string" == typeof t && "none" !== t
	}

	function vm(t) {
		t = t.fill;
		return null != t && "none" !== t
	}

	function _m(t, e) {
		var n;
		null != e.fillOpacity && 1 !== e.fillOpacity ? (n = t.globalAlpha, t.globalAlpha = e.fillOpacity * e
			.opacity, t.fill(), t.globalAlpha = n) : t.fill()
	}

	function xm(t, e) {
		var n;
		null != e.strokeOpacity && 1 !== e.strokeOpacity ? (n = t.globalAlpha, t.globalAlpha = e.strokeOpacity * e
			.opacity, t.stroke(), t.globalAlpha = n) : t.stroke()
	}

	function bm(t, e, n) {
		var n = ra(e.image, e.__image, n);
		if (aa(n)) return t = t.createPattern(n, e.repeat || "repeat"), "function" == typeof DOMMatrix && t && t
			.setTransform && ((n = new DOMMatrix).translateSelf(e.x || 0, e.y || 0), n.rotateSelf(0, 0, (e
				.rotation || 0) * Vt), n.scaleSelf(e.scaleX || 1, e.scaleY || 1), t.setTransform(n)), t
	}
	var wm = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"],
		Sm = [
			["lineCap", "butt"],
			["lineJoin", "miter"],
			["miterLimit", 10]
		];

	function Mm(t, e, n, i, r) {
		var o, a = !1;
		if (!i && e === (n = n || {})) return !1;
		!i && e.opacity === n.opacity || (Lm(t, r), a = !0, o = Math.max(Math.min(e.opacity, 1), 0), t.globalAlpha =
			isNaN(o) ? xa.opacity : o), !i && e.blend === n.blend || (a || (Lm(t, r), a = !0), t
			.globalCompositeOperation = e.blend || xa.blend);
		for (var s = 0; s < wm.length; s++) {
			var l = wm[s];
			!i && e[l] === n[l] || (a || (Lm(t, r), a = !0), t[l] = t.dpr * (e[l] || 0))
		}
		return !i && e.shadowColor === n.shadowColor || (a || (Lm(t, r), a = !0), t.shadowColor = e.shadowColor ||
			xa.shadowColor), a
	}

	function Tm(t, e, n, i, r) {
		var o = Pm(e, r.inHover),
			a = i ? null : n && Pm(n, r.inHover) || {};
		if (o !== a) {
			var s = Mm(t, o, a, i, r);
			(i || o.fill !== a.fill) && (s || (Lm(t, r), s = !0), mm(o.fill)) && (t.fillStyle = o.fill), (i || o
				.stroke !== a.stroke) && (s || (Lm(t, r), s = !0), mm(o.stroke)) && (t.strokeStyle = o.stroke), !i
				&& o.opacity === a.opacity || (s || (Lm(t, r), s = !0), t.globalAlpha = null == o.opacity ? 1 : o
					.opacity), e.hasStroke() && (n = o.lineWidth / (o.strokeNoScale && e.getLineScale ? e
					.getLineScale() : 1), t.lineWidth !== n) && (s || (Lm(t, r), s = !0), t.lineWidth = n);
			for (var l = 0; l < Sm.length; l++) {
				var u = Sm[l],
					h = u[0];
				!i && o[h] === a[h] || (s || (Lm(t, r), s = !0), t[h] = o[h] || u[1])
			}
		}
	}

	function Im(t, e) {
		var e = e.transform,
			n = t.dpr || 1;
		e ? t.setTransform(n * e[0], n * e[1], n * e[2], n * e[3], n * e[4], n * e[5]) : t.setTransform(n, 0, 0, n,
			0, 0)
	}
	var Cm = 1,
		Dm = 2,
		km = 3,
		Am = 4;

	function Lm(t, e) {
		e.batchFill && t.fill(), e.batchStroke && t.stroke(), e.batchFill = "", e.batchStroke = ""
	}

	function Pm(t, e) {
		return e && t.__hoverStyle || t.style
	}

	function Om(t, e) {
		Rm(t, e, {
			inHover: !1,
			viewWidth: 0,
			viewHeight: 0
		}, !0)
	}

	function Rm(t, e, n, E) {
		var i = e.transform;
		if (e.shouldBePainted(n.viewWidth, n.viewHeight, !1, !1)) {
			var r = e.__clipPaths,
				o = n.prevElClipPaths,
				a = !1,
				s = !1;
			if (!o || function(t, e) {
					if (t !== e && (t || e)) {
						if (!t || !e || t.length !== e.length) return 1;
						for (var n = 0; n < t.length; n++)
							if (t[n] !== e[n]) return 1
					}
				}(r, o)) {
				if (o && o.length && (Lm(t, n), t.restore(), s = a = !0, n.prevElClipPaths = null, n.allClipped = !
						1, n.prevEl = null), r && r.length) {
					Lm(t, n), t.save();
					for (var z = r, l = t, o = n, B = !1, F = 0; F < z.length; F++) {
						var V = z[F],
							B = B || V.isZeroArea();
						Im(l, V), l.beginPath(), V.buildPath(l, V.shape), l.clip()
					}
					o.allClipped = B, a = !0
				}
				n.prevElClipPaths = r
			}
			if (n.allClipped) e.__isRendered = !1;
			else {
				e.beforeBrush && e.beforeBrush(), e.innerBeforeBrush();
				var u, h, c, p, d, f, g, y, m, v, _, x, b, G, w, S, M, T, I, C, D, k, A, o = n.prevEl,
					L = (o || (s = a = !0), e instanceof j && e.autoBatch && (r = e.style, L = vm(r), u = ym(r), !(r
						.lineDash || !(+L ^ +u) || L && "string" != typeof r.fill || u && "string" !=
						typeof r.stroke || r.strokePercent < 1 || r.strokeOpacity < 1 || r.fillOpacity < 1))),
					a = (a || (u = i, r = o.transform, u && r ? u[0] !== r[0] || u[1] !== r[1] || u[2] !== r[2] ||
							u[3] !== r[3] || u[4] !== r[4] || u[5] !== r[5] : u || r) ? (Lm(t, n), Im(t, e)) : L ||
						Lm(t, n), Pm(e, n.inHover));
				if (e instanceof j) n.lastDrawType !== Cm && (s = !0, n.lastDrawType = Cm), Tm(t, e, o, s, n), L &&
					(n.batchFill || n.batchStroke) || t.beginPath(), i = t, r = e, R = L, w = ym(p = a), S = vm(p),
					M = p.strokePercent, T = M < 1, I = !r.path, r.silent && !T || !I || r.createPathProxy(), C = r
					.path || gm, D = r.__dirty, R || (d = p.fill, A = p.stroke, f = S && !!d.colorStops, g = w && !!
						A.colorStops, y = S && !!d.image, m = w && !!A.image, k = b = x = _ = v = void 0, (f ||
						g) && (k = r.getBoundingRect()), f && (v = D ? cm(i, d, k) : r.__canvasFillGradient, r
							.__canvasFillGradient = v), g && (_ = D ? cm(i, A, k) : r.__canvasStrokeGradient, r
							.__canvasStrokeGradient = _), y && (x = D || !r.__canvasFillPattern ? bm(i, d, r) : r
							.__canvasFillPattern, r.__canvasFillPattern = x), m && (b = D || !r
							.__canvasStrokePattern ? bm(i, A, r) : r.__canvasStrokePattern, r
							.__canvasStrokePattern = x), f ? i.fillStyle = v : y && (x ? i.fillStyle = x : S = !1),
						g ? i.strokeStyle = _ : m && (b ? i.strokeStyle = b : w = !1)), k = r.getGlobalScale(), C
					.setScale(k[0], k[1], r.segmentIgnoreThreshold), i.setLineDash && p.lineDash && (G = (d = fm(
						r))[0], O = d[1]), A = !0, (I || D & xn) && (C.setDPR(i.dpr), T ? C.setContext(null) : (C
							.setContext(i), A = !1), C.reset(), r.buildPath(C, r.shape, R), C.toStatic(), r
						.pathUpdated()), A && C.rebuildPath(i, T ? M : 1), G && (i.setLineDash(G), i
						.lineDashOffset = O), R || (p.strokeFirst ? (w && xm(i, p), S && _m(i, p)) : (S && _m(i, p),
						w && xm(i, p))), G && i.setLineDash([]), L && (n.batchFill = a.fill || "", n.batchStroke = a
						.stroke || "");
				else if (e instanceof bs) n.lastDrawType !== km && (s = !0, n.lastDrawType = km), Tm(t, e, o, s, n),
					f = t, v = e, null != (x = (y = a).text) && (x += ""), x && (f.font = y.font || K, f.textAlign =
						y.textAlign, f.textBaseline = y.textBaseline, _ = g = void 0, f.setLineDash && y.lineDash &&
						(g = (v = fm(v))[0], _ = v[1]), g && (f.setLineDash(g), f.lineDashOffset = _), y
						.strokeFirst ? (ym(y) && f.strokeText(x, y.x, y.y), vm(y) && f.fillText(x, y.x, y.y)) : (vm(
							y) && f.fillText(x, y.x, y.y), ym(y) && f.strokeText(x, y.x, y.y)), g) && f.setLineDash(
						[]);
				else if (e instanceof Is) n.lastDrawType !== Dm && (s = !0, n.lastDrawType = Dm), m = o, b = s, Mm(
					t, Pm(e, (k = n).inHover), m && Pm(m, k.inHover), b, k), d = t, I = a, (r = (D = e)
					.__image = ra(I.image, D.__image, D, D.onload)) && aa(r) && (A = I.x || 0, C = I.y || 0, T =
					D.getWidth(), D = D.getHeight(), M = r.width / r.height, null == T && null != D ? T = D *
					M : null == D && null != T ? D = T / M : null == T && null == D && (T = r.width, D = r
						.height), I.sWidth && I.sHeight ? (h = I.sx || 0, c = I.sy || 0, d.drawImage(r, h, c, I
						.sWidth, I.sHeight, A, C, T, D)) : I.sx && I.sy ? (h = I.sx, c = I.sy, d.drawImage(r, h,
						c, T - h, D - c, A, C, T, D)) : d.drawImage(r, A, C, T, D));
				else if (e.getTemporalDisplayables) {
					n.lastDrawType !== Am && (s = !0, n.lastDrawType = Am);
					var P, H, W = t,
						O = e,
						R = n,
						U = O.getDisplayables(),
						X = O.getTemporalDisplayables(),
						Y = (W.save(), {
							prevElClipPaths: null,
							prevEl: null,
							allClipped: !1,
							viewWidth: R.viewWidth,
							viewHeight: R.viewHeight,
							inHover: R.inHover
						});
					for (P = O.getCursor(), H = U.length; P < H; P++)(N = U[P]).beforeBrush && N.beforeBrush(), N
						.innerBeforeBrush(), Rm(W, N, Y, P === H - 1), N.innerAfterBrush(), N.afterBrush && N
						.afterBrush(), Y.prevEl = N;
					for (var N, q = 0, Z = X.length; q < Z; q++)(N = X[q]).beforeBrush && N.beforeBrush(), N
						.innerBeforeBrush(), Rm(W, N, Y, q === Z - 1), N.innerAfterBrush(), N.afterBrush && N
						.afterBrush(), Y.prevEl = N;
					O.clearTemporalDisplayables(), O.notClear = !0, W.restore()
				}
				L && E && Lm(t, n), e.innerAfterBrush(), e.afterBrush && e.afterBrush(), (n.prevEl = e).__dirty = 0,
					e.__isRendered = !0
			}
		} else e.__dirty &= ~_n, e.__isRendered = !1
	}
	var Nm = new $y,
		Em = new ni(100),
		zm = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY",
			"maxTileWidth", "maxTileHeight"
		];

	function Bm(t, e) {
		if ("none" === t) return null;
		var a = e.getDevicePixelRatio(),
			s = e.getZr(),
			l = "svg" === s.painter.type,
			e = (t.dirty && Nm.delete(t), Nm.get(t));
		if (e) return e;
		for (var n, u = z(t, {
				symbol: "rect",
				symbolSize: 1,
				symbolKeepAspect: !0,
				color: "rgba(0, 0, 0, 0.2)",
				backgroundColor: null,
				dashArrayX: 5,
				dashArrayY: 5,
				rotation: 0,
				maxTileWidth: 512,
				maxTileHeight: 512
			}), e = ("none" === u.backgroundColor && (u.backgroundColor = null), {
				repeat: "repeat"
			}), i = e, r = [a], o = !0, h = 0; h < zm.length; ++h) {
			var c = u[zm[h]];
			if (null != c && !F(c) && !V(c) && !G(c) && "boolean" != typeof c) {
				o = !1;
				break
			}
			r.push(c)
		}
		o && (n = r.join(",") + (l ? "-svg" : ""), v = Em.get(n)) && (l ? i.svgElement = v : i.image = v);
		var p, d = function t(e) {
				if (!e || 0 === e.length) return [
					[0, 0]
				];
				if (G(e)) return [
					[o = Math.ceil(e), o]
				];
				var n = !0;
				for (var i = 0; i < e.length; ++i)
					if (!G(e[i])) {
						n = !1;
						break
					} if (n) return t([e]);
				var r = [];
				for (i = 0; i < e.length; ++i) {
					var o;
					G(e[i]) ? (o = Math.ceil(e[i]), r.push([o, o])) : (o = B(e[i], function(t) {
						return Math.ceil(t)
					})).length % 2 == 1 ? r.push(o.concat(o)) : r.push(o)
				}
				return r
			}(u.dashArrayX),
			f = function(t) {
				if (!t || "object" == typeof t && 0 === t.length) return [0, 0];
				if (G(t)) return [e = Math.ceil(t), e];
				var e = B(t, function(t) {
					return Math.ceil(t)
				});
				return t.length % 2 ? e.concat(e) : e
			}(u.dashArrayY),
			g = function t(e) {
				if (!e || 0 === e.length) return [
					["rect"]
				];
				if (V(e)) return [
					[e]
				];
				var n = !0;
				for (var i = 0; i < e.length; ++i)
					if (!V(e[i])) {
						n = !1;
						break
					} if (n) return t([e]);
				var r = [];
				for (i = 0; i < e.length; ++i) V(e[i]) ? r.push([e[i]]) : r.push(e[i]);
				return r
			}(u.symbol),
			y = function(t) {
				return B(t, Fm)
			}(d),
			m = Fm(f),
			v = !l && U.createCanvas(),
			_ = l && {
				tag: "g",
				attrs: {},
				key: "dcl",
				children: []
			},
			x = function() {
				for (var t = 1, e = 0, n = y.length; e < n; ++e) t = xo(t, y[e]);
				for (var i = 1, e = 0, n = g.length; e < n; ++e) i = xo(i, g[e].length);
				t *= i;
				var r = m * y.length * g.length;
				return {
					width: Math.max(1, Math.min(t, u.maxTileWidth)),
					height: Math.max(1, Math.min(r, u.maxTileHeight))
				}
			}();
		v && (v.width = x.width * a, v.height = x.height * a, p = v.getContext("2d")), p && (p.clearRect(0, 0, v
			.width, v.height), u.backgroundColor) && (p.fillStyle = u.backgroundColor, p.fillRect(0, 0, v.width,
			v.height));
		for (var b = 0, w = 0; w < f.length; ++w) b += f[w];
		if (!(b <= 0))
			for (var S = -m, M = 0, T = 0, I = 0; S < x.height;) {
				if (M % 2 == 0) {
					for (var C = T / 2 % g.length, D = 0, k = 0, A = 0; D < 2 * x.width;) {
						for (var L, P, O, R, N, E = 0, w = 0; w < d[I].length; ++w) E += d[I][w];
						if (E <= 0) break;
						k % 2 == 0 && (P = .5 * (1 - u.symbolSize), L = D + d[I][k] * P, P = S + f[M] * P, O = d[I][
							k
						] * u.symbolSize, R = f[M] * u.symbolSize, N = A / 2 % g[C].length, function(t, e,
							n, i, r) {
							var o = l ? 1 : a,
								r = sm(r, t * o, e * o, n * o, i * o, u.color, u.symbolKeepAspect);
							l ? (t = s.painter.renderOneToVNode(r)) && _.children.push(t) : Om(p, r)
						}(L, P, O, R, g[C][N])), D += d[I][k], ++A, ++k === d[I].length && (k = 0)
					}++I === d.length && (I = 0)
				}
				S += f[M], ++T, ++M === f.length && (M = 0)
			}
		return o && Em.put(n, v || _), i.image = v, i.svgElement = _, i.svgWidth = x.width, i.svgHeight = x.height,
			e.rotation = u.rotation, e.scaleX = e.scaleY = l ? 1 : 1 / a, Nm.set(t, e), t.dirty = !1, e
	}

	function Fm(t) {
		for (var e = 0, n = 0; n < t.length; ++n) e += t[n];
		return t.length % 2 == 1 ? 2 * e : e
	}
	var Vm = new le,
		Gm = {};
	var tm = {
			PROCESSOR: {
				FILTER: 1e3,
				SERIES_FILTER: 800,
				STATISTIC: 5e3
			},
			VISUAL: {
				LAYOUT: 1e3,
				PROGRESSIVE_LAYOUT: 1100,
				GLOBAL: 2e3,
				CHART: 3e3,
				POST_CHART_LAYOUT: 4600,
				COMPONENT: 4e3,
				BRUSH: 5e3,
				CHART_ITEM: 4500,
				ARIA: 6e3,
				DECAL: 7e3
			}
		},
		Hm = "__flagInMainProcess",
		Wm = "__pendingUpdate",
		Um = "__needsUpdateStatus",
		Xm = /^[a-zA-Z0-9_]+$/,
		Ym = "__connectUpdateStatus";

	function qm(n) {
		return function() {
			for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
			if (!this.isDisposed()) return jm(this, n, t);
			this.id
		}
	}

	function Zm(n) {
		return function() {
			for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
			return jm(this, n, t)
		}
	}

	function jm(t, e, n) {
		return n[0] = n[0] && n[0].toLowerCase(), le.prototype[e].apply(t, n)
	}
	u(Qm, Km = le);
	var Km, $m = Qm;

	function Qm() {
		return null !== Km && Km.apply(this, arguments) || this
	}
	var Jm, t0, e0, n0, i0, r0, o0, a0, s0, l0, u0, h0, c0, p0, d0, f0, g0, y0, m0, em = $m.prototype,
		v0 = (em.on = Zm("on"), em.off = Zm("off"), u(h, m0 = le), h.prototype._onframe = function() {
			if (!this._disposed) {
				y0(this);
				var t = this._scheduler;
				if (this[Wm]) {
					var e = this[Wm].silent;
					this[Hm] = !0;
					try {
						Jm(this), n0.update.call(this, null, this[Wm].updateParams)
					} catch (t) {
						throw this[Hm] = !1, this[Wm] = null, t
					}
					this._zr.flush(), this[Hm] = !1, this[Wm] = null, a0.call(this, e), s0.call(this, e)
				} else if (t.unfinished) {
					var n = 1,
						i = this._model,
						r = this._api;
					t.unfinished = !1;
					do {
						var o = +new Date
					} while (t.performSeriesTasks(i), t.performDataProcessorTasks(i), r0(this, i), t
						.performVisualTasks(i), p0(this, this._model, r, "remain", {}), 0 < (n -= +new Date -
						o) && t.unfinished);
					t.unfinished || this._zr.flush()
				}
			}
		}, h.prototype.getDom = function() {
			return this._dom
		}, h.prototype.getId = function() {
			return this.id
		}, h.prototype.getZr = function() {
			return this._zr
		}, h.prototype.isSSR = function() {
			return this._ssr
		}, h.prototype.setOption = function(t, e, n) {
			if (!this[Hm])
				if (this._disposed) this.id;
				else {
					O(e) && (n = e.lazyUpdate, i = e.silent, r = e.replaceMerge, o = e.transition, e = e
						.notMerge), this[Hm] = !0, this._model && !e || (e = new Rd(this._api), a = this
						._theme, (s = this._model = new Md).scheduler = this._scheduler, s.ssr = this._ssr,
						s.init(null, null, null, a, this._locale, e)), this._model.setOption(t, {
						replaceMerge: r
					}, D0);
					var i, r, o, a, s = {
						seriesTransition: o,
						optionChanged: !0
					};
					if (n) this[Wm] = {
						silent: i,
						updateParams: s
					}, this[Hm] = !1, this.getZr().wakeUp();
					else {
						try {
							Jm(this), n0.update.call(this, null, s)
						} catch (t) {
							throw this[Wm] = null, this[Hm] = !1, t
						}
						this._ssr || this._zr.flush(), this[Wm] = null, this[Hm] = !1, a0.call(this, i), s0
							.call(this, i)
					}
				}
		}, h.prototype.setTheme = function() {}, h.prototype.getModel = function() {
			return this._model
		}, h.prototype.getOption = function() {
			return this._model && this._model.getOption()
		}, h.prototype.getWidth = function() {
			return this._zr.getWidth()
		}, h.prototype.getHeight = function() {
			return this._zr.getHeight()
		}, h.prototype.getDevicePixelRatio = function() {
			return this._zr.painter.dpr || w.hasGlobalWindow && window.devicePixelRatio || 1
		}, h.prototype.getRenderedCanvas = function(t) {
			return this.renderToCanvas(t)
		}, h.prototype.renderToCanvas = function(t) {
			return this._zr.painter.getRenderedCanvas({
				backgroundColor: (t = t || {}).backgroundColor || this._model.get("backgroundColor"),
				pixelRatio: t.pixelRatio || this.getDevicePixelRatio()
			})
		}, h.prototype.renderToSVGString = function(t) {
			return this._zr.painter.renderToString({
				useViewBox: (t = t || {}).useViewBox
			})
		}, h.prototype.getSvgDataURL = function() {
			var t;
			if (w.svgSupported) return E((t = this._zr).storage.getDisplayList(), function(t) {
				t.stopAnimation(null, !0)
			}), t.painter.toDataURL()
		}, h.prototype.getDataURL = function(t) {
			var e, n, i, r;
			if (!this._disposed) return r = (t = t || {}).excludeComponents, e = this._model, n = [], i = this,
				E(r, function(t) {
					e.eachComponent({
						mainType: t
					}, function(t) {
						t = i._componentsMap[t.__viewId];
						t.group.ignore || (n.push(t), t.group.ignore = !0)
					})
				}), r = "svg" === this._zr.painter.getType() ? this.getSvgDataURL() : this.renderToCanvas(t)
				.toDataURL("image/" + (t && t.type || "png")), E(n, function(t) {
					t.group.ignore = !1
				}), r;
			this.id
		}, h.prototype.getConnectedDataURL = function(i) {
			var r, o, a, s, l, u, h, c, p, e, t, n, d, f, g;
			if (!this._disposed) return r = "svg" === i.type, o = this.group, a = Math.min, s = Math.max, O0[
				o] ? (u = l = 1 / 0, c = h = -1 / 0, p = [], e = i && i.pixelRatio || this
					.getDevicePixelRatio(), E(P0, function(t, e) {
						var n;
						t.group === o && (n = r ? t.getZr().painter.getSvgDom().innerHTML : t
							.renderToCanvas(y(i)), t = t.getDom().getBoundingClientRect(), l = a(t
								.left, l), u = a(t.top, u), h = s(t.right, h), c = s(t.bottom, c), p
							.push({
								dom: n,
								left: t.left,
								top: t.top
							}))
					}), t = (h *= e) - (l *= e), n = (c *= e) - (u *= e), d = U.createCanvas(), (f = $r(d, {
						renderer: r ? "svg" : "canvas"
					})).resize({
						width: t,
						height: n
					}), r ? (g = "", E(p, function(t) {
							var e = t.left - l,
								n = t.top - u;
							g += '<g transform="translate(' + e + "," + n + ')">' + t.dom + "</g>"
						}), f.painter.getSvgRoot().innerHTML = g, i.connectedBackgroundColor && f.painter
						.setBackgroundColor(i.connectedBackgroundColor), f.refreshImmediately(), f.painter
						.toDataURL()) : (i.connectedBackgroundColor && f.add(new Ns({
						shape: {
							x: 0,
							y: 0,
							width: t,
							height: n
						},
						style: {
							fill: i.connectedBackgroundColor
						}
					})), E(p, function(t) {
						t = new Is({
							style: {
								x: t.left * e - l,
								y: t.top * e - u,
								image: t.dom
							}
						});
						f.add(t)
					}), f.refreshImmediately(), d.toDataURL("image/" + (i && i.type || "png")))) : this
				.getDataURL(i);
			this.id
		}, h.prototype.convertToPixel = function(t, e) {
			return i0(this, "convertToPixel", t, e)
		}, h.prototype.convertFromPixel = function(t, e) {
			return i0(this, "convertFromPixel", t, e)
		}, h.prototype.containPixel = function(t, i) {
			var r;
			if (!this._disposed) return E(zo(this._model, t), function(t, n) {
				0 <= n.indexOf("Models") && E(t, function(t) {
					var e = t.coordinateSystem;
					e && e.containPoint ? r = r || !!e.containPoint(i) : "seriesModels" ===
						n && (e = this._chartsMap[t.__viewId]) && e.containPoint && (r =
							r || e.containPoint(i, t))
				}, this)
			}, this), !!r;
			this.id
		}, h.prototype.getVisual = function(t, e) {
			var t = zo(this._model, t, {
					defaultMainType: "series"
				}),
				n = t.seriesModel.getData(),
				t = t.hasOwnProperty("dataIndexInside") ? t.dataIndexInside : t.hasOwnProperty("dataIndex") ? n
				.indexOfRawIndex(t.dataIndex) : null;
			if (null == t) return Xy(n, e);
			var i = n,
				r = t,
				o = e;
			switch (o) {
				case "color":
					return i.getItemVisual(r, "style")[i.getVisual("drawType")];
				case "opacity":
					return i.getItemVisual(r, "style").opacity;
				case "symbol":
				case "symbolSize":
				case "liftZ":
					return i.getItemVisual(r, o)
			}
		}, h.prototype.getViewOfComponentModel = function(t) {
			return this._componentsMap[t.__viewId]
		}, h.prototype.getViewOfSeriesModel = function(t) {
			return this._chartsMap[t.__viewId]
		}, h.prototype._initEvents = function() {
			var t, n, i, s = this;
			E(M0, function(a) {
				function t(t) {
					var n, e, i, r = s.getModel(),
						o = t.target;
					"globalout" === a ? n = {} : o && Zy(o, function(t) {
						var e, t = k(t);
						return t && null != t.dataIndex ? (e = t.dataModel || r
							.getSeriesByIndex(t.seriesIndex), n = e && e.getDataParams(t
								.dataIndex, t.dataType, o) || {}, 1) : t.eventData && (n =
							P({}, t.eventData), 1)
					}, !0), n && (e = n.componentType, i = n.componentIndex, "markLine" !== e &&
						"markPoint" !== e && "markArea" !== e || (e = "series", i = n.seriesIndex),
						i = (e = e && null != i && r.getComponent(e, i)) && s["series" === e
							.mainType ? "_chartsMap" : "_componentsMap"][e.__viewId], n.event = t, n
						.type = a, s._$eventProcessor.eventInfo = {
							targetEl: o,
							packedEvent: n,
							model: e,
							view: i
						}, s.trigger(a, n))
				}
				t.zrEventfulCallAtLast = !0, s._zr.on(a, t, s)
			}), E(I0, function(t, e) {
				s._messageCenter.on(e, function(t) {
					this.trigger(e, t)
				}, s)
			}), E(["selectchanged"], function(e) {
				s._messageCenter.on(e, function(t) {
					this.trigger(e, t)
				}, s)
			}), t = this._messageCenter, i = (n = this)._api, t.on("selectchanged", function(t) {
				var e = i.getModel();
				t.isFromClick ? (qy("map", "selectchanged", n, e, t), qy("pie", "selectchanged", n, e,
					t)) : "select" === t.fromAction ? (qy("map", "selected", n, e, t), qy("pie",
					"selected", n, e, t)) : "unselect" === t.fromAction && (qy("map", "unselected",
					n, e, t), qy("pie", "unselected", n, e, t))
			})
		}, h.prototype.isDisposed = function() {
			return this._disposed
		}, h.prototype.clear = function() {
			this._disposed ? this.id : this.setOption({
				series: []
			}, !0)
		}, h.prototype.dispose = function() {
			var t, e, n;
			this._disposed ? this.id : (this._disposed = !0, this.getDom() && Go(this.getDom(), E0, ""), e = (
					t = this)._api, n = t._model, E(t._componentsViews, function(t) {
					t.dispose(n, e)
				}), E(t._chartsViews, function(t) {
					t.dispose(n, e)
				}), t._zr.dispose(), t._dom = t._model = t._chartsMap = t._componentsMap = t._chartsViews =
				t._componentsViews = t._scheduler = t._api = t._zr = t._throttledZrFlush = t._theme = t
				._coordSysMgr = t._messageCenter = null, delete P0[t.id])
		}, h.prototype.resize = function(t) {
			if (!this[Hm])
				if (this._disposed) this.id;
				else {
					this._zr.resize(t);
					var e = this._model;
					if (this._loadingFX && this._loadingFX.resize(), e) {
						var e = e.resetOption("media"),
							n = t && t.silent;
						this[Wm] && (null == n && (n = this[Wm].silent), e = !0, this[Wm] = null), this[Hm] = !
						0;
						try {
							e && Jm(this), n0.update.call(this, {
								type: "resize",
								animation: P({
									duration: 0
								}, t && t.animation)
							})
						} catch (t) {
							throw this[Hm] = !1, t
						}
						this[Hm] = !1, a0.call(this, n), s0.call(this, n)
					}
				}
		}, h.prototype.showLoading = function(t, e) {
			this._disposed ? this.id : (O(t) && (e = t, t = ""), t = t || "default", this.hideLoading(), L0[
				t] && (t = L0[t](this._api, e), e = this._zr, this._loadingFX = t, e.add(t)))
		}, h.prototype.hideLoading = function() {
			this._disposed ? this.id : (this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX =
				null)
		}, h.prototype.makeActionFromEvent = function(t) {
			var e = P({}, t);
			return e.type = I0[t.type], e
		}, h.prototype.dispatchAction = function(t, e) {
			var n;
			this._disposed ? this.id : (O(e) || (e = {
				silent: !!e
			}), T0[t.type] && this._model && (this[Hm] ? this._pendingActions.push(t) : (n = e.silent,
				o0.call(this, t, n), (t = e.flush) ? this._zr.flush() : !1 !== t && w.browser
				.weChat && this._throttledZrFlush(), a0.call(this, n), s0.call(this, n))))
		}, h.prototype.updateLabelLayout = function() {
			Vm.trigger("series:layoutlabels", this._model, this._api, {
				updatedSeries: []
			})
		}, h.prototype.appendData = function(t) {
			var e;
			this._disposed ? this.id : (e = t.seriesIndex, this.getModel().getSeriesByIndex(e).appendData(t),
				this._scheduler.unfinished = !0, this.getZr().wakeUp())
		}, h.internalField = (Jm = function(t) {
			var e = t._scheduler;
			e.restorePipelines(t._model), e.prepareStageTasks(), t0(t, !0), t0(t, !1), e.plan()
		}, t0 = function(t, r) {
			for (var o = t._model, a = t._scheduler, s = r ? t._componentsViews : t._chartsViews, l = r ? t
					._componentsMap : t._chartsMap, u = t._zr, h = t._api, e = 0; e < s.length; e++) s[e]
				.__alive = !1;

			function n(t) {
				var e, n = t.__requireNewView,
					i = (t.__requireNewView = !1, "_ec_" + t.id + "_" + t.type),
					n = !n && l[i];
				n || (e = Yo(t.type), (n = new(r ? Qg.getClass(e.main, e.sub) : iy.getClass(e.sub))).init(o,
						h), l[i] = n, s.push(n), u.add(n.group)), t.__viewId = n.__id = i, n.__alive = !0, n
					.__model = t, n.group.__ecComponentInfo = {
						mainType: t.mainType,
						index: t.componentIndex
					}, r || a.prepareView(n, t, o, h)
			}
			r ? o.eachComponent(function(t, e) {
				"series" !== t && n(e)
			}) : o.eachSeries(n);
			for (e = 0; e < s.length;) {
				var i = s[e];
				i.__alive ? e++ : (r || i.renderTask.dispose(), u.remove(i.group), i.dispose(o, h), s
					.splice(e, 1), l[i.__id] === i && delete l[i.__id], i.__id = i.group
					.__ecComponentInfo = null)
			}
		}, e0 = function(c, e, p, n, t) {
			var i, d, r = c._model;

			function o(t) {
				t && t.__alive && t[e] && t[e](t.__model, r, c._api, p)
			}
			r.setUpdatePayload(p), n ? ((i = {})[n + "Id"] = p[n + "Id"], i[n + "Index"] = p[n + "Index"],
				i[n + "Name"] = p[n + "Name"], i = {
					mainType: n,
					query: i
				}, t && (i.subType = t), null != (t = p.excludeSeriesId) && (d = N(), E(So(t), function(
					t) {
					t = Ao(t, null);
					null != t && d.set(t, !0)
				})), r && r.eachComponent(i, function(t) {
					var e, n, i = d && null != d.get(t.id);
					if (!i)
						if (Zl(p))
							if (t instanceof Ug) {
								if (p.type === sl && !p.notBlur && !t.get(["emphasis",
									"disabled"])) {
									var i = t,
										r = p,
										o = c._api,
										a = i.seriesIndex,
										s = i.getData(r.dataType);
									if (s) {
										var r = (F(r = Ro(s, r)) ? r[0] : r) || 0,
											l = s.getItemGraphicEl(r);
										if (!l)
											for (var u = s.count(), h = 0; !l && h < u;) l = s
												.getItemGraphicEl(h++);
										l ? El(a, (r = k(l)).focus, r.blurScope, o) : (r = i.get([
												"emphasis", "focus"
											]), i = i.get(["emphasis", "blurScope"]), null !=
											r && El(a, r, i, o))
									}
								}
							} else {
								a = Bl(t.mainType, t.componentIndex, p.name, c._api), r = a
									.focusSelf, i = a.dispatchers;
								p.type === sl && r && !p.notBlur && zl(t.mainType, t.componentIndex,
									c._api), i && E(i, function(t) {
									(p.type === sl ? Dl : kl)(t)
								})
							}
					else ql(p) && t instanceof Ug && (o = t, i = p, c._api, ql(i) && (e = i
						.dataType, F(n = Ro(o.getData(e), i)) || (n = [n]), o[i.type ===
							cl ? "toggleSelect" : i.type === ul ? "select" : "unselect"](n,
							e)), Fl(t), g0(c))
				}, c), r && r.eachComponent(i, function(t) {
					d && null != d.get(t.id) || o(c["series" === n ? "_chartsMap" :
						"_componentsMap"][t.__viewId])
				}, c)) : E([].concat(c._componentsViews).concat(c._chartsViews), o)
		}, n0 = {
			prepareAndUpdate: function(t) {
				Jm(this), n0.update.call(this, t, {
					optionChanged: null != t.newOption
				})
			},
			update: function(t, e) {
				var n = this._model,
					i = this._api,
					r = this._zr,
					o = this._coordSysMgr,
					a = this._scheduler;
				n && (n.setUpdatePayload(t), a.restoreData(n, t), a.performSeriesTasks(n), o.create(n,
						i), a.performDataProcessorTasks(n, t), r0(this, n), o.update(n, i), _0(n), a
					.performVisualTasks(n, t), h0(this, n, i, t, e), o = n.get("backgroundColor") ||
					"transparent", a = n.get("darkMode"), r.setBackgroundColor(o), null != a &&
					"auto" !== a && r.setDarkMode(a), Vm.trigger("afterupdate", n, i))
			},
			updateTransform: function(n) {
				var i, r, o = this,
					a = this._model,
					s = this._api;
				a && (a.setUpdatePayload(n), i = [], a.eachComponent(function(t, e) {
					"series" !== t && (t = o.getViewOfComponentModel(e)) && t.__alive && (!t
						.updateTransform || (e = t.updateTransform(e, a, s, n)) && e
						.update) && i.push(t)
				}), r = N(), a.eachSeries(function(t) {
					var e = o._chartsMap[t.__viewId];
					(!e.updateTransform || (e = e.updateTransform(t, a, s, n)) && e
					.update) && r.set(t.uid, 1)
				}), _0(a), this._scheduler.performVisualTasks(a, n, {
					setDirty: !0,
					dirtyMap: r
				}), p0(this, a, s, n, {}, r), Vm.trigger("afterupdate", a, s))
			},
			updateView: function(t) {
				var e = this._model;
				e && (e.setUpdatePayload(t), iy.markUpdateMethod(t, "updateView"), _0(e), this
					._scheduler.performVisualTasks(e, t, {
						setDirty: !0
					}), h0(this, e, this._api, t, {}), Vm.trigger("afterupdate", e, this._api))
			},
			updateVisual: function(n) {
				var i = this,
					r = this._model;
				r && (r.setUpdatePayload(n), r.eachSeries(function(t) {
						t.getData().clearAllVisual()
					}), iy.markUpdateMethod(n, "updateVisual"), _0(r), this._scheduler
					.performVisualTasks(r, n, {
						visualType: "visual",
						setDirty: !0
					}), r.eachComponent(function(t, e) {
						"series" !== t && (t = i.getViewOfComponentModel(e)) && t.__alive && t
							.updateVisual(e, r, i._api, n)
					}), r.eachSeries(function(t) {
						i._chartsMap[t.__viewId].updateVisual(t, r, i._api, n)
					}), Vm.trigger("afterupdate", r, this._api))
			},
			updateLayout: function(t) {
				n0.update.call(this, t)
			}
		}, i0 = function(t, e, n, i) {
			if (t._disposed) t.id;
			else
				for (var r = t._model, o = t._coordSysMgr.getCoordinateSystems(), a = zo(r, n), s = 0; s < o
					.length; s++) {
					var l = o[s];
					if (l[e] && null != (l = l[e](r, a, i))) return l
				}
		}, r0 = function(t, e) {
			var n = t._chartsMap,
				i = t._scheduler;
			e.eachSeries(function(t) {
				i.updateStreamModes(t, n[t.__viewId])
			})
		}, o0 = function(i, t) {
			var r, o, a = this,
				e = this.getModel(),
				n = i.type,
				s = i.escapeConnect,
				l = T0[n],
				u = l.actionInfo,
				h = (u.update || "update").split(":"),
				c = h.pop(),
				p = null != h[0] && Yo(h[0]),
				h = (this[Hm] = !0, [i]),
				d = !1,
				f = (i.batch && (d = !0, h = B(i.batch, function(t) {
					return (t = z(P({}, t), i)).batch = null, t
				})), []),
				g = ql(i),
				y = Zl(i);
			if (y && Nl(this._api), E(h, function(t) {
					var e, n;
					(r = (r = l.action(t, a._model, a._api)) || P({}, t)).type = u.event || r.type, f
						.push(r), y ? (e = (n = Bo(i)).queryOptionMap, n = n.mainTypeSpecified ? e
						.keys()[0] : "series", e0(a, c, t, n), g0(a)) : g ? (e0(a, c, t, "series"), g0(
							a)) : p && e0(a, c, t, p.main, p.sub)
				}), "none" !== c && !y && !g && !p) try {
				this[Wm] ? (Jm(this), n0.update.call(this, i), this[Wm] = null) : n0[c].call(this, i)
			} catch (t) {
				throw this[Hm] = !1, t
			}
			r = d ? {
				type: u.event || n,
				escapeConnect: s,
				batch: f
			} : f[0], this[Hm] = !1, t || ((h = this._messageCenter).trigger(r.type, r), g && (d = {
				type: "selectchanged",
				escapeConnect: s,
				selected: (o = [], e.eachSeries(function(n) {
					E(n.getAllData(), function(t) {
						t.data;
						var t = t.type,
							e = n.getSelectedDataIndices();
						0 < e.length && (e = {
							dataIndex: e,
							seriesIndex: n.seriesIndex
						}, null != t && (e.dataType = t), o.push(e))
					})
				}), o),
				isFromClick: i.isFromClick || !1,
				fromAction: i.type,
				fromActionPayload: i
			}, h.trigger(d.type, d)))
		}, a0 = function(t) {
			for (var e = this._pendingActions; e.length;) {
				var n = e.shift();
				o0.call(this, n, t)
			}
		}, s0 = function(t) {
			t || this.trigger("updated")
		}, l0 = function(e, n) {
			e.on("rendered", function(t) {
				n.trigger("rendered", t), !e.animation.isFinished() || n[Wm] || n._scheduler
					.unfinished || n._pendingActions.length || n.trigger("finished")
			})
		}, u0 = function(t, a) {
			t.on("mouseover", function(t) {
				var e, n, i, r, o = Zy(t.target, Yl);
				o && (o = o, e = t, t = a._api, n = k(o), i = (r = Bl(n.componentMainType, n
						.componentIndex, n.componentHighDownName, t)).dispatchers, r = r
					.focusSelf, i ? (r && zl(n.componentMainType, n.componentIndex, t), E(i,
						function(t) {
							return Il(t, e)
						})) : (El(n.seriesIndex, n.focus, n.blurScope, t), "self" === n.focus &&
						zl(n.componentMainType, n.componentIndex, t), Il(o, e)), g0(a))
			}).on("mouseout", function(t) {
				var e, n, i = Zy(t.target, Yl);
				i && (i = i, e = t, Nl(t = a._api), (n = Bl((n = k(i)).componentMainType, n
					.componentIndex, n.componentHighDownName, t).dispatchers) ? E(n,
					function(t) {
						return Cl(t, e)
					}) : Cl(i, e), g0(a))
			}).on("click", function(t) {
				var e, t = Zy(t.target, function(t) {
					return null != k(t).dataIndex
				}, !0);
				t && (e = t.selected ? "unselect" : "select", t = k(t), a._api.dispatchAction({
					type: e,
					dataType: t.dataType,
					dataIndexInside: t.dataIndex,
					seriesIndex: t.seriesIndex,
					isFromClick: !0
				}))
			})
		}, h0 = function(t, e, n, i, r) {
			var o, a, s, l, u, h, c;
			u = [], c = !(h = []), (o = e).eachComponent(function(t, e) {
				var n = e.get("zlevel") || 0,
					i = e.get("z") || 0,
					r = e.getZLevelKey();
				c = c || !!r, ("series" === t ? h : u).push({
					zlevel: n,
					z: i,
					idx: e.componentIndex,
					type: t,
					key: r
				})
			}), c && (vn(a = u.concat(h), function(t, e) {
				return t.zlevel === e.zlevel ? t.z - e.z : t.zlevel - e.zlevel
			}), E(a, function(t) {
				var e = o.getComponent(t.type, t.idx),
					n = t.zlevel,
					t = t.key;
				null != s && (n = Math.max(s, n)), t ? (n === s && t !== l && n++, l = t) : l &&
					(n === s && n++, l = ""), s = n, e.setZLevel(n)
			})), c0(t, e, n, i, r), E(t._chartsViews, function(t) {
				t.__alive = !1
			}), p0(t, e, n, i, r), E(t._chartsViews, function(t) {
				t.__alive || t.remove(e, n)
			})
		}, c0 = function(t, n, i, r, e, o) {
			E(o || t._componentsViews, function(t) {
				var e = t.__model;
				w0(0, t), t.render(e, n, i, r), b0(e, t), S0(e, t)
			})
		}, p0 = function(r, t, e, o, n, a) {
			var i, s, l, u, h = r._scheduler,
				c = (n = P(n || {}, {
					updatedSeries: t.getSeries()
				}), Vm.trigger("series:beforeupdate", t, e, n), !1);
			t.eachSeries(function(t) {
					var e, n = r._chartsMap[t.__viewId],
						i = (n.__alive = !0, n.renderTask);
					h.updatePayload(i, o), w0(0, n), a && a.get(t.uid) && i.dirty(), i.perform(h
							.getPerformArgs(i)) && (c = !0), n.group.silent = !!t.get("silent"), i = n,
						e = t.get("blendMode") || null, i.eachRendered(function(t) {
							t.isGroup || (t.style.blend = e)
						}), Fl(t)
				}), h.unfinished = c || h.unfinished, Vm.trigger("series:layoutlabels", t, e, n), Vm
				.trigger("series:transition", t, e, n), t.eachSeries(function(t) {
					var e = r._chartsMap[t.__viewId];
					b0(t, e), S0(t, e)
				}), s = t, l = (i = r)._zr.storage, u = 0, l.traverse(function(t) {
					t.isGroup || u++
				}), u > s.get("hoverLayerThreshold") && !w.node && !w.worker && s.eachSeries(function(t) {
					t.preventUsingHoverLayer || (t = i._chartsMap[t.__viewId]).__alive && t
						.eachRendered(function(t) {
							t.states.emphasis && (t.states.emphasis.hoverLayer = !0)
						})
				}), Vm.trigger("series:afterupdate", t, e, n)
		}, g0 = function(t) {
			t[Um] = !0, t.getZr().wakeUp()
		}, y0 = function(t) {
			t[Um] && (t.getZr().storage.traverse(function(t) {
				Eh(t) || x0(t)
			}), t[Um] = !1)
		}, d0 = function(n) {
			return u(t, e = Dd), t.prototype.getCoordinateSystems = function() {
				return n._coordSysMgr.getCoordinateSystems()
			}, t.prototype.getComponentByElement = function(t) {
				for (; t;) {
					var e = t.__ecComponentInfo;
					if (null != e) return n._model.getComponent(e.mainType, e.index);
					t = t.parent
				}
			}, t.prototype.enterEmphasis = function(t, e) {
				Dl(t, e), g0(n)
			}, t.prototype.leaveEmphasis = function(t, e) {
				kl(t, e), g0(n)
			}, t.prototype.enterBlur = function(t) {
				Al(t), g0(n)
			}, t.prototype.leaveBlur = function(t) {
				Ll(t), g0(n)
			}, t.prototype.enterSelect = function(t) {
				Pl(t), g0(n)
			}, t.prototype.leaveSelect = function(t) {
				Ol(t), g0(n)
			}, t.prototype.getModel = function() {
				return n.getModel()
			}, t.prototype.getViewOfComponentModel = function(t) {
				return n.getViewOfComponentModel(t)
			}, t.prototype.getViewOfSeriesModel = function(t) {
				return n.getViewOfSeriesModel(t)
			}, new t(n);

			function t() {
				return null !== e && e.apply(this, arguments) || this
			}
			var e
		}, void(f0 = function(i) {
			function r(t, e) {
				for (var n = 0; n < t.length; n++) t[n][Ym] = e
			}
			E(I0, function(t, e) {
				i._messageCenter.on(e, function(t) {
					var e, n;
					!O0[i.group] || 0 === i[Ym] || t && t.escapeConnect || (e = i
						.makeActionFromEvent(t), n = [], E(P0, function(t) {
							t !== i && t.group === i.group && n.push(t)
						}), r(n, 0), E(n, function(t) {
							1 !== t[Ym] && t.dispatchAction(e)
						}), r(n, 2))
				})
			})
		})), h);

	function h(t, e, n) {
		var i = m0.call(this, new Vy) || this,
			t = (i._chartsViews = [], i._chartsMap = {}, i._componentsViews = [], i._componentsMap = {}, i
				._pendingActions = [], n = n || {}, V(e) && (e = A0[e]), i._dom = t, n.ssr && Jr(function(t) {
					var e, t = k(t),
						n = t.dataIndex;
					if (null != n) return (e = N()).set("series_index", t.seriesIndex), e.set("data_index", n),
						t.ssrType && e.set("ssr_type", t.ssrType), e
				}), i._zr = $r(t, {
					renderer: n.renderer || "canvas",
					devicePixelRatio: n.devicePixelRatio,
					width: n.width,
					height: n.height,
					ssr: n.ssr,
					useDirtyRect: R(n.useDirtyRect, !1),
					useCoarsePointer: R(n.useCoarsePointer, "auto"),
					pointerSize: n.pointerSize
				})),
			n = (i._ssr = n.ssr, i._throttledZrFlush = dy(pt(t.flush, t), 17), (e = y(e)) && tf(e, !0), i._theme =
				e, i._locale = V(e = n.locale || Kc) ? (n = Zc[e.toUpperCase()] || {}, e === Xc || e === Yc ? y(n) :
					d(y(n), y(Zc[qc]), !1)) : d(y(e), y(Zc[qc]), !1), i._coordSysMgr = new Ld, i._api = d0(i));

		function r(t, e) {
			return t.__prio - e.__prio
		}
		return vn(k0, r), vn(C0, r), i._scheduler = new Sy(i, n, C0, k0), i._messageCenter = new $m, i
		._initEvents(), i.resize = pt(i.resize, i), t.animation.on("frame", i._onframe, i), l0(t, i), u0(t, i), Dt(
				i), i
	}

	function _0(t) {
		t.clearColorPalette(), t.eachSeries(function(t) {
			t.clearColorPalette()
		})
	}

	function x0(t) {
		for (var e = [], n = t.currentStates, i = 0; i < n.length; i++) {
			var r = n[i];
			"emphasis" !== r && "blur" !== r && "select" !== r && e.push(r)
		}
		t.selected && t.states.select && e.push("select"), t.hoverState === rl && t.states.emphasis ? e.push(
			"emphasis") : t.hoverState === il && t.states.blur && e.push("blur"), t.useStates(e)
	}

	function b0(t, e) {
		var n, i;
		t.preventAutoZ || (n = t.get("z") || 0, i = t.get("zlevel") || 0, e.eachRendered(function(t) {
			return function t(e, n, i, r) {
				var o = e.getTextContent();
				var a = e.getTextGuideLine();
				var s = e.isGroup;
				if (s)
					for (var l = e.childrenRef(), u = 0; u < l.length; u++) r = Math.max(t(l[u], n,
						i, r), r);
				else e.z = n, e.zlevel = i, r = Math.max(e.z2, r);
				o && (o.z = n, o.zlevel = i, isFinite(r)) && (o.z2 = r + 2);
				a && (s = e.textGuideLineConfig, a.z = n, a.zlevel = i, isFinite(r)) && (a.z2 = r +
					(s && s.showAbove ? 1 : -1));
				return r
			}(t, n, i, -1 / 0), !0
		}))
	}

	function w0(t, e) {
		e.eachRendered(function(t) {
			var e, n;
			Eh(t) || (e = t.getTextContent(), n = t.getTextGuideLine(), t.stateTransition && (t
					.stateTransition = null), e && e.stateTransition && (e.stateTransition = null), n &&
				n.stateTransition && (n.stateTransition = null), t.hasState() ? (t.prevStates = t
					.currentStates, t.clearStates()) : t.prevStates && (t.prevStates = null))
		})
	}

	function S0(t, e) {
		var n = t.getModel("stateAnimation"),
			r = t.isAnimationEnabled(),
			t = n.get("duration"),
			o = 0 < t ? {
				duration: t,
				delay: n.get("delay"),
				easing: n.get("easing")
			} : null;
		e.eachRendered(function(t) {
			var e, n, i;
			t.states && t.states.emphasis && (Eh(t) || (t instanceof j && ((i = tl(n = t)).normalFill = n
					.style.fill, i.normalStroke = n.style.stroke, n = n.states.select || {}, i
					.selectFill = n.style && n.style.fill || null, i.selectStroke = n.style && n
					.style.stroke || null), t.__dirty && (i = t.prevStates) && t.useStates(i), r &&
				(t.stateTransition = o, n = t.getTextContent(), e = t.getTextGuideLine(), n && (n
					.stateTransition = o), e) && (e.stateTransition = o), t.__dirty && x0(t)))
		})
	}
	var nm = v0.prototype,
		M0 = (nm.on = qm("on"), nm.off = qm("off"), nm.one = function(i, r, t) {
			var o = this;
			this.on.call(this, i, function t() {
				for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
				r && r.apply && r.apply(this, e), o.off(i, t)
			}, t)
		}, ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout",
			"contextmenu"
		]);
	var T0 = {},
		I0 = {},
		C0 = [],
		D0 = [],
		k0 = [],
		A0 = {},
		L0 = {},
		P0 = {},
		O0 = {},
		R0 = +new Date,
		N0 = +new Date,
		E0 = "_echarts_instance_";

	function z0(t) {
		O0[t] = !1
	}
	Jy = z0;

	function B0(t) {
		return P0[e = E0, (t = t).getAttribute ? t.getAttribute(e) : t[e]];
		var e
	}

	function F0(t, e) {
		A0[t] = e
	}

	function V0(t) {
		C(D0, t) < 0 && D0.push(t)
	}

	function G0(t, e) {
		K0(C0, t, e, 2e3)
	}

	function H0(t) {
		U0("afterinit", t)
	}

	function W0(t) {
		U0("afterupdate", t)
	}

	function U0(t, e) {
		Vm.on(t, e)
	}

	function X0(t, e, n) {
		D(e) && (n = e, e = "");
		var i = O(t) ? t.type : [t, t = {
			event: e
		}][0];
		t.event = (t.event || i).toLowerCase(), e = t.event, I0[e] || (Tt(Xm.test(i) && Xm.test(e)), T0[i] || (T0[
			i] = {
				action: n,
				actionInfo: t
			}), I0[e] = i)
	}

	function Y0(t, e) {
		Ld.register(t, e)
	}

	function q0(t, e) {
		K0(k0, t, e, 1e3, "layout")
	}

	function Z0(t, e) {
		K0(k0, t, e, 3e3, "visual")
	}
	var j0 = [];

	function K0(t, e, n, i, r) {
		(D(e) || O(e)) && (n = e, e = i), 0 <= C(j0, n) || (j0.push(n), (i = Sy.wrapStageHandler(n, r)).__prio = e,
			i.__raw = n, t.push(i))
	}

	function $0(t, e) {
		L0[t] = e
	}

	function Q0(t, e, n) {
		var i = Gm.registerMap;
		i && i(t, e, n)
	}

	function J0(t) {
		var e = (t = y(t)).type,
			n = (e || f(""), e.split(":")),
			i = (2 !== n.length && f(""), !1);
		"echarts" === n[0] && (e = n[1], i = !0), t.__isBuiltIn = i, sg.set(e, t)
	}
	Z0(2e3, ea), Z0(4500, ec), Z0(4500, ip), Z0(2e3, Oc), Z0(4500, Uy), Z0(7e3, function(e, i) {
		e.eachRawSeries(function(t) {
			var n;
			!e.isSeriesFiltered(t) && ((n = t.getData()).hasItemVisual() && n.each(function(t) {
				var e = n.getItemVisual(t, "decal");
				e && (n.ensureUniqueItemVisual(t, "style").decal = Bm(e, i))
			}), t = n.getVisual("decal")) && (n.getVisual("style").decal = Bm(t, i))
		})
	}), V0(tf), G0(900, function(t) {
		var i = N();
		t.eachSeries(function(t) {
			var e, n = t.get("stack");
			n && (n = i.get(n) || i.set(n, []), (t = {
				stackResultDimension: (e = t.getData()).getCalculationInfo(
					"stackResultDimension"),
				stackedOverDimension: e.getCalculationInfo("stackedOverDimension"),
				stackedDimension: e.getCalculationInfo("stackedDimension"),
				stackedByDimension: e.getCalculationInfo("stackedByDimension"),
				isStackedByIndex: e.getCalculationInfo("isStackedByIndex"),
				data: e,
				seriesModel: t
			}).stackedDimension) && (t.isStackedByIndex || t.stackedByDimension) && (n.length &&
				e.setCalculationInfo("stackedOnSeries", n[n.length - 1].seriesModel), n.push(t))
		}), i.each(ef)
	}), $0("default", function(i, r) {
		z(r = r || {}, {
			text: "loading",
			textColor: "#000",
			fontSize: 12,
			fontWeight: "normal",
			fontStyle: "normal",
			fontFamily: "sans-serif",
			maskColor: "rgba(255, 255, 255, 0.8)",
			showSpinner: !0,
			color: "#5470c6",
			spinnerRadius: 10,
			lineWidth: 5,
			zlevel: 0
		});
		var o, t = new Ur,
			a = new Ns({
				style: {
					fill: r.maskColor
				},
				zlevel: r.zlevel,
				z: 1e4
			}),
			s = (t.add(a), new Vs({
				style: {
					text: r.text,
					fill: r.textColor,
					fontSize: r.fontSize,
					fontWeight: r.fontWeight,
					fontStyle: r.fontStyle,
					fontFamily: r.fontFamily
				},
				zlevel: r.zlevel,
				z: 10001
			})),
			l = new Ns({
				style: {
					fill: "none"
				},
				textContent: s,
				textConfig: {
					position: "right",
					distance: 10
				},
				zlevel: r.zlevel,
				z: 10001
			});
		return t.add(l), r.showSpinner && ((o = new ch({
			shape: {
				startAngle: -wy / 2,
				endAngle: -wy / 2 + .1,
				r: r.spinnerRadius
			},
			style: {
				stroke: r.color,
				lineCap: "round",
				lineWidth: r.lineWidth
			},
			zlevel: r.zlevel,
			z: 10001
		})).animateShape(!0).when(1e3, {
			endAngle: 3 * wy / 2
		}).start("circularInOut"), o.animateShape(!0).when(1e3, {
			startAngle: 3 * wy / 2
		}).delay(300).start("circularInOut"), t.add(o)), t.resize = function() {
			var t = s.getBoundingRect().width,
				e = r.showSpinner ? r.spinnerRadius : 0,
				t = (i.getWidth() - 2 * e - (r.showSpinner && t ? 10 : 0) - t) / 2 - (r.showSpinner &&
					t ? 0 : 5 + t / 2) + (r.showSpinner ? 0 : t / 2) + (t ? 0 : e),
				n = i.getHeight() / 2;
			r.showSpinner && o.setShape({
				cx: t,
				cy: n
			}), l.setShape({
				x: t - e,
				y: n - e,
				width: 2 * e,
				height: 2 * e
			}), a.setShape({
				x: 0,
				y: 0,
				width: i.getWidth(),
				height: i.getHeight()
			})
		}, t.resize(), t
	}), X0({
		type: sl,
		event: sl,
		update: sl
	}, Ft), X0({
		type: ll,
		event: ll,
		update: ll
	}, Ft), X0({
		type: ul,
		event: ul,
		update: ul
	}, Ft), X0({
		type: hl,
		event: hl,
		update: hl
	}, Ft), X0({
		type: cl,
		event: cl,
		update: cl
	}, Ft), F0("light", Nc), F0("dark", Lc);

	function tv(t) {
		return null == t ? 0 : t.length || 1
	}

	function ev(t) {
		return t
	}
	iv.prototype.add = function(t) {
		return this._add = t, this
	}, iv.prototype.update = function(t) {
		return this._update = t, this
	}, iv.prototype.updateManyToOne = function(t) {
		return this._updateManyToOne = t, this
	}, iv.prototype.updateOneToMany = function(t) {
		return this._updateOneToMany = t, this
	}, iv.prototype.updateManyToMany = function(t) {
		return this._updateManyToMany = t, this
	}, iv.prototype.remove = function(t) {
		return this._remove = t, this
	}, iv.prototype.execute = function() {
		this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"]()
	}, iv.prototype._executeOneToOne = function() {
		var t = this._old,
			e = this._new,
			n = {},
			i = new Array(t.length),
			r = new Array(e.length);
		this._initIndexMap(t, null, i, "_oldKeyGetter"), this._initIndexMap(e, n, r, "_newKeyGetter");
		for (var o = 0; o < t.length; o++) {
			var a, s = i[o],
				l = n[s],
				u = tv(l);
			1 < u ? (a = l.shift(), 1 === l.length && (n[s] = l[0]), this._update && this._update(a, o)) : 1 ===
				u ? (n[s] = null, this._update && this._update(l, o)) : this._remove && this._remove(o)
		}
		this._performRestAdd(r, n)
	}, iv.prototype._executeMultiple = function() {
		var t = this._old,
			e = this._new,
			n = {},
			i = {},
			r = [],
			o = [];
		this._initIndexMap(t, n, r, "_oldKeyGetter"), this._initIndexMap(e, i, o, "_newKeyGetter");
		for (var a = 0; a < r.length; a++) {
			var s = r[a],
				l = n[s],
				u = i[s],
				h = tv(l),
				c = tv(u);
			if (1 < h && 1 === c) this._updateManyToOne && this._updateManyToOne(u, l), i[s] = null;
			else if (1 === h && 1 < c) this._updateOneToMany && this._updateOneToMany(u, l), i[s] = null;
			else if (1 === h && 1 === c) this._update && this._update(u, l), i[s] = null;
			else if (1 < h && 1 < c) this._updateManyToMany && this._updateManyToMany(u, l), i[s] = null;
			else if (1 < h)
				for (var p = 0; p < h; p++) this._remove && this._remove(l[p]);
			else this._remove && this._remove(l)
		}
		this._performRestAdd(o, i)
	}, iv.prototype._performRestAdd = function(t, e) {
		for (var n = 0; n < t.length; n++) {
			var i = t[n],
				r = e[i],
				o = tv(r);
			if (1 < o)
				for (var a = 0; a < o; a++) this._add && this._add(r[a]);
			else 1 === o && this._add && this._add(r);
			e[i] = null
		}
	}, iv.prototype._initIndexMap = function(t, e, n, i) {
		for (var r = this._diffModeMultiple, o = 0; o < t.length; o++) {
			var a, s, l = "_ec_" + this[i](t[o], o);
			r || (n[o] = l), e && (0 === (s = tv(a = e[l])) ? (e[l] = o, r && n.push(l)) : 1 === s ? e[l] = [a,
				o
			] : a.push(o))
		}
	};
	var nv = iv;

	function iv(t, e, n, i, r, o) {
		this._old = t, this._new = e, this._oldKeyGetter = n || ev, this._newKeyGetter = i || ev, this.context = r,
			this._diffModeMultiple = "multiple" === o
	}
	ov.prototype.get = function() {
		return {
			fullDimensions: this._getFullDimensionNames(),
			encode: this._encode
		}
	}, ov.prototype._getFullDimensionNames = function() {
		return this._cachedDimNames || (this._cachedDimNames = this._schema ? this._schema
			.makeOutputDimensionNames() : []), this._cachedDimNames
	};
	var rv = ov;

	function ov(t, e) {
		this._encode = t, this._schema = e
	}

	function av(o, t) {
		var e = {},
			a = e.encode = {},
			s = N(),
			l = [],
			u = [],
			h = {},
			i = (E(o.dimensions, function(t) {
				var e, n, i = o.getDimensionInfo(t),
					r = i.coordDim;
				r && (e = i.coordDimIndex, sv(a, r)[e] = t, i.isExtraCoord || (s.set(r, 1), "ordinal" !== (
						n = i.type) && "time" !== n && (l[0] = t), sv(h, r)[e] = o
					.getDimensionIndex(i.name)), i.defaultTooltip) && u.push(t), Qp.each(function(t,
				e) {
					var n = sv(a, e),
						e = i.otherDims[e];
					null != e && !1 !== e && (n[e] = i.name)
				})
			}), []),
			r = {},
			n = (s.each(function(t, e) {
				var n = a[e];
				r[e] = n[0], i = i.concat(n)
			}), e.dataDimsOnCoord = i, e.dataDimIndicesOnCoord = B(i, function(t) {
				return o.getDimensionInfo(t).storeDimIndex
			}), e.encodeFirstDimNotExtra = r, a.label),
			n = (n && n.length && (l = n.slice()), a.tooltip);
		return n && n.length ? u = n.slice() : u.length || (u = l.slice()), a.defaultedLabel = l, a
			.defaultedTooltip = u, e.userOutput = new rv(h, t), e
	}

	function sv(t, e) {
		return t.hasOwnProperty(e) || (t[e] = []), t[e]
	}
	var lv = function(t) {
			this.otherDims = {}, null != t && P(this, t)
		},
		uv = No(),
		hv = {
			float: "f",
			int: "i",
			ordinal: "o",
			number: "n",
			time: "t"
		},
		cv = (pv.prototype.isDimensionOmitted = function() {
			return this._dimOmitted
		}, pv.prototype._updateDimOmitted = function(t) {
			(this._dimOmitted = t) && !this._dimNameMap && (this._dimNameMap = gv(this.source))
		}, pv.prototype.getSourceDimensionIndex = function(t) {
			return R(this._dimNameMap.get(t), -1)
		}, pv.prototype.getSourceDimension = function(t) {
			var e = this.source.dimensionsDefine;
			if (e) return e[t]
		}, pv.prototype.makeStoreSchema = function() {
			for (var t = this._fullDimCount, e = pf(this.source), n = !(30 < t), i = "", r = [], o = 0, a =
				0; o < t; o++) {
				var s, l = void 0,
					u = void 0,
					h = void 0,
					c = this.dimensions[a];
				c && c.storeDimIndex === o ? (l = e ? c.name : null, u = c.type, h = c.ordinalMeta, a++) : (s =
					this.getSourceDimension(o)) && (l = e ? s.name : null, u = s.type), r.push({
					property: l,
					type: u,
					ordinalMeta: h
				}), !e || null == l || c && c.isCalculationCoord || (i += n ? l.replace(/\`/g, "`1")
					.replace(/\$/g, "`2") : l), i = i + "$" + (hv[u] || "f"), h && (i += h.uid), i += "$"
			}
			var p = this.source;
			return {
				dimensions: r,
				hash: [p.seriesLayoutBy, p.startIndex, i].join("$$")
			}
		}, pv.prototype.makeOutputDimensionNames = function() {
			for (var t = [], e = 0, n = 0; e < this._fullDimCount; e++) {
				var i = void 0,
					r = this.dimensions[n];
				r && r.storeDimIndex === e ? (r.isCalculationCoord || (i = r.name), n++) : (r = this
					.getSourceDimension(e)) && (i = r.name), t.push(i)
			}
			return t
		}, pv.prototype.appendCalculationDimension = function(t) {
			this.dimensions.push(t), t.isCalculationCoord = !0, this._fullDimCount++, this._updateDimOmitted(!0)
		}, pv);

	function pv(t) {
		this.dimensions = t.dimensions, this._dimOmitted = t.dimensionOmitted, this.source = t.source, this
			._fullDimCount = t.fullDimensionCount, this._updateDimOmitted(t.dimensionOmitted)
	}

	function dv(t) {
		return t instanceof cv
	}

	function fv(t) {
		for (var e = N(), n = 0; n < (t || []).length; n++) {
			var i = t[n],
				i = O(i) ? i.name : i;
			null != i && null == e.get(i) && e.set(i, n)
		}
		return e
	}

	function gv(t) {
		var e = uv(t);
		return e.dimNameMap || (e.dimNameMap = fv(t.dimensionsDefine))
	}
	var yv, mv, vv, _v, xv, bv, wv, Sv = O,
		Mv = B,
		Tv = "undefined" == typeof Int32Array ? Array : Int32Array,
		Iv = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput",
			"_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"
		],
		Cv = ["_approximateExtent"],
		Dv = (c.prototype.getDimension = function(t) {
			var e;
			return null == (e = this._recognizeDimIndex(t)) ? t : (e = t, this._dimOmitted ? null != (t = this
					._dimIdxToName.get(e)) ? t : (t = this._schema.getSourceDimension(e)) ? t.name :
				void 0 : this.dimensions[e])
		}, c.prototype.getDimensionIndex = function(t) {
			var e = this._recognizeDimIndex(t);
			return null != e ? e : null == t ? -1 : (e = this._getDimInfo(t)) ? e.storeDimIndex : this
				._dimOmitted ? this._schema.getSourceDimensionIndex(t) : -1
		}, c.prototype._recognizeDimIndex = function(t) {
			if (G(t) || null != t && !isNaN(t) && !this._getDimInfo(t) && (!this._dimOmitted || this._schema
					.getSourceDimensionIndex(t) < 0)) return +t
		}, c.prototype._getStoreDimIndex = function(t) {
			return this.getDimensionIndex(t)
		}, c.prototype.getDimensionInfo = function(t) {
			return this._getDimInfo(this.getDimension(t))
		}, c.prototype._initGetDimensionInfo = function(t) {
			var e = this._dimInfos;
			this._getDimInfo = t ? function(t) {
				return e.hasOwnProperty(t) ? e[t] : void 0
			} : function(t) {
				return e[t]
			}
		}, c.prototype.getDimensionsOnCoord = function() {
			return this._dimSummary.dataDimsOnCoord.slice()
		}, c.prototype.mapDimension = function(t, e) {
			var n = this._dimSummary;
			return null == e ? n.encodeFirstDimNotExtra[t] : (n = n.encode[t]) ? n[e] : null
		}, c.prototype.mapDimensionsAll = function(t) {
			return (this._dimSummary.encode[t] || []).slice()
		}, c.prototype.getStore = function() {
			return this._store
		}, c.prototype.initData = function(t, e, n) {
			var i, r, o = this;
			(i = t instanceof vg ? t : i) || (r = this.dimensions, t = af(t) || lt(t) ? new yf(t, r.length) : t,
				i = new vg, r = Mv(r, function(t) {
					return {
						type: o._dimInfos[t].type,
						property: t
					}
				}), i.initData(t, r, n)), this._store = i, this._nameList = (e || []).slice(), this
			._idList = [], this._nameRepeatCount = {}, this._doInit(0, i.count()), this._dimSummary = av(this,
					this._schema), this.userOutput = this._dimSummary.userOutput
		}, c.prototype.appendData = function(t) {
			t = this._store.appendData(t);
			this._doInit(t[0], t[1])
		}, c.prototype.appendValues = function(t, e) {
			var t = this._store.appendValues(t, e.length),
				n = t.start,
				i = t.end,
				r = this._shouldMakeIdFromName();
			if (this._updateOrdinalMeta(), e)
				for (var o = n; o < i; o++) this._nameList[o] = e[o - n], r && wv(this, o)
		}, c.prototype._updateOrdinalMeta = function() {
			for (var t = this._store, e = this.dimensions, n = 0; n < e.length; n++) {
				var i = this._dimInfos[e[n]];
				i.ordinalMeta && t.collectOrdinalMeta(i.storeDimIndex, i.ordinalMeta)
			}
		}, c.prototype._shouldMakeIdFromName = function() {
			var t = this._store.getProvider();
			return null == this._idDimIdx && t.getSource().sourceFormat !== id && !t.fillStorage
		}, c.prototype._doInit = function(t, e) {
			if (!(e <= t)) {
				var n = this._store.getProvider(),
					i = (this._updateOrdinalMeta(), this._nameList),
					r = this._idList;
				if (n.getSource().sourceFormat === Jp && !n.pure)
					for (var o = [], a = t; a < e; a++) {
						var s, l = n.getItem(a, o);
						this.hasItemOption || !O(s = l) || s instanceof Array || (this.hasItemOption = !0), l &&
							(s = l.name, null == i[a] && null != s && (i[a] = Ao(s, null)), l = l.id, null == r[
								a]) && null != l && (r[a] = Ao(l, null))
					}
				if (this._shouldMakeIdFromName())
					for (a = t; a < e; a++) wv(this, a);
				yv(this)
			}
		}, c.prototype.getApproximateExtent = function(t) {
			return this._approximateExtent[t] || this._store.getDataExtent(this._getStoreDimIndex(t))
		}, c.prototype.setApproximateExtent = function(t, e) {
			e = this.getDimension(e), this._approximateExtent[e] = t.slice()
		}, c.prototype.getCalculationInfo = function(t) {
			return this._calculationInfo[t]
		}, c.prototype.setCalculationInfo = function(t, e) {
			Sv(t) ? P(this._calculationInfo, t) : this._calculationInfo[t] = e
		}, c.prototype.getName = function(t) {
			var t = this.getRawIndex(t),
				e = this._nameList[t];
			return e = null == (e = null == e && null != this._nameDimIdx ? vv(this, this._nameDimIdx, t) : e) ?
				"" : e
		}, c.prototype._getCategory = function(t, e) {
			e = this._store.get(t, e), t = this._store.getOrdinalMeta(t);
			return t ? t.categories[e] : e
		}, c.prototype.getId = function(t) {
			return mv(this, this.getRawIndex(t))
		}, c.prototype.count = function() {
			return this._store.count()
		}, c.prototype.get = function(t, e) {
			var n = this._store,
				t = this._dimInfos[t];
			if (t) return n.get(t.storeDimIndex, e)
		}, c.prototype.getByRawIndex = function(t, e) {
			var n = this._store,
				t = this._dimInfos[t];
			if (t) return n.getByRawIndex(t.storeDimIndex, e)
		}, c.prototype.getIndices = function() {
			return this._store.getIndices()
		}, c.prototype.getDataExtent = function(t) {
			return this._store.getDataExtent(this._getStoreDimIndex(t))
		}, c.prototype.getSum = function(t) {
			return this._store.getSum(this._getStoreDimIndex(t))
		}, c.prototype.getMedian = function(t) {
			return this._store.getMedian(this._getStoreDimIndex(t))
		}, c.prototype.getValues = function(t, e) {
			var n = this,
				i = this._store;
			return F(t) ? i.getValues(Mv(t, function(t) {
				return n._getStoreDimIndex(t)
			}), e) : i.getValues(t)
		}, c.prototype.hasValue = function(t) {
			for (var e = this._dimSummary.dataDimIndicesOnCoord, n = 0, i = e.length; n < i; n++)
				if (isNaN(this._store.get(e[n], t))) return !1;
			return !0
		}, c.prototype.indexOfName = function(t) {
			for (var e = 0, n = this._store.count(); e < n; e++)
				if (this.getName(e) === t) return e;
			return -1
		}, c.prototype.getRawIndex = function(t) {
			return this._store.getRawIndex(t)
		}, c.prototype.indexOfRawIndex = function(t) {
			return this._store.indexOfRawIndex(t)
		}, c.prototype.rawIndexOf = function(t, e) {
			t = (t && this._invertedIndicesMap[t])[e];
			return null == t || isNaN(t) ? -1 : t
		}, c.prototype.indicesOfNearest = function(t, e, n) {
			return this._store.indicesOfNearest(this._getStoreDimIndex(t), e, n)
		}, c.prototype.each = function(t, e, n) {
			D(t) && (n = e, e = t, t = []);
			n = n || this, t = Mv(_v(t), this._getStoreDimIndex, this);
			this._store.each(t, n ? pt(e, n) : e)
		}, c.prototype.filterSelf = function(t, e, n) {
			D(t) && (n = e, e = t, t = []);
			n = n || this, t = Mv(_v(t), this._getStoreDimIndex, this);
			return this._store = this._store.filter(t, n ? pt(e, n) : e), this
		}, c.prototype.selectRange = function(n) {
			var i = this,
				r = {};
			return E(ct(n), function(t) {
				var e = i._getStoreDimIndex(t);
				r[e] = n[t]
			}), this._store = this._store.selectRange(r), this
		}, c.prototype.mapArray = function(t, e, n) {
			D(t) && (n = e, e = t, t = []);
			var i = [];
			return this.each(t, function() {
				i.push(e && e.apply(this, arguments))
			}, n = n || this), i
		}, c.prototype.map = function(t, e, n, i) {
			n = n || i || this, i = Mv(_v(t), this._getStoreDimIndex, this), t = bv(this);
			return t._store = this._store.map(i, n ? pt(e, n) : e), t
		}, c.prototype.modify = function(t, e, n, i) {
			n = n || i || this, i = Mv(_v(t), this._getStoreDimIndex, this);
			this._store.modify(i, n ? pt(e, n) : e)
		}, c.prototype.downSample = function(t, e, n, i) {
			var r = bv(this);
			return r._store = this._store.downSample(this._getStoreDimIndex(t), e, n, i), r
		}, c.prototype.lttbDownSample = function(t, e) {
			var n = bv(this);
			return n._store = this._store.lttbDownSample(this._getStoreDimIndex(t), e), n
		}, c.prototype.getRawDataItem = function(t) {
			return this._store.getRawDataItem(t)
		}, c.prototype.getItemModel = function(t) {
			var e = this.hostModel,
				t = this.getRawDataItem(t);
			return new Vc(t, e, e && e.ecModel)
		}, c.prototype.diff = function(e) {
			var n = this;
			return new nv(e ? e.getStore().getIndices() : [], this.getStore().getIndices(), function(t) {
				return mv(e, t)
			}, function(t) {
				return mv(n, t)
			})
		}, c.prototype.getVisual = function(t) {
			var e = this._visual;
			return e && e[t]
		}, c.prototype.setVisual = function(t, e) {
			this._visual = this._visual || {}, Sv(t) ? P(this._visual, t) : this._visual[t] = e
		}, c.prototype.getItemVisual = function(t, e) {
			t = this._itemVisuals[t], t = t && t[e];
			return null == t ? this.getVisual(e) : t
		}, c.prototype.hasItemVisual = function() {
			return 0 < this._itemVisuals.length
		}, c.prototype.ensureUniqueItemVisual = function(t, e) {
			var n = this._itemVisuals,
				i = n[t],
				n = (i = i || (n[t] = {}))[e];
			return null == n && (F(n = this.getVisual(e)) ? n = n.slice() : Sv(n) && (n = P({}, n)), i[e] = n),
				n
		}, c.prototype.setItemVisual = function(t, e, n) {
			var i = this._itemVisuals[t] || {};
			this._itemVisuals[t] = i, Sv(e) ? P(i, e) : i[e] = n
		}, c.prototype.clearAllVisual = function() {
			this._visual = {}, this._itemVisuals = []
		}, c.prototype.setLayout = function(t, e) {
			Sv(t) ? P(this._layout, t) : this._layout[t] = e
		}, c.prototype.getLayout = function(t) {
			return this._layout[t]
		}, c.prototype.getItemLayout = function(t) {
			return this._itemLayouts[t]
		}, c.prototype.setItemLayout = function(t, e, n) {
			this._itemLayouts[t] = n ? P(this._itemLayouts[t] || {}, e) : e
		}, c.prototype.clearItemLayouts = function() {
			this._itemLayouts.length = 0
		}, c.prototype.setItemGraphicEl = function(t, e) {
			var n, i, r, o, a = this.hostModel && this.hostModel.seriesIndex;
			n = a, i = this.dataType, r = t, (a = e) && ((o = k(a)).dataIndex = r, o.dataType = i, o
				.seriesIndex = n, o.ssrType = "chart", "group" === a.type) && a.traverse(function(t) {
				t = k(t);
				t.seriesIndex = n, t.dataIndex = r, t.dataType = i, t.ssrType = "chart"
			}), this._graphicEls[t] = e
		}, c.prototype.getItemGraphicEl = function(t) {
			return this._graphicEls[t]
		}, c.prototype.eachItemGraphicEl = function(n, i) {
			E(this._graphicEls, function(t, e) {
				t && n && n.call(i, t, e)
			})
		}, c.prototype.cloneShallow = function(t) {
			return t = t || new c(this._schema || Mv(this.dimensions, this._getDimInfo, this), this.hostModel),
				xv(t, this), t._store = this._store, t
		}, c.prototype.wrapMethod = function(t, e) {
			var n = this[t];
			D(n) && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(t), this[
				t] = function() {
					var t = n.apply(this, arguments);
					return e.apply(this, [t].concat(St(arguments)))
				})
		}, c.internalField = (yv = function(a) {
			var s = a._invertedIndicesMap;
			E(s, function(t, e) {
				var n = a._dimInfos[e],
					i = n.ordinalMeta,
					r = a._store;
				if (i) {
					t = s[e] = new Tv(i.categories.length);
					for (var o = 0; o < t.length; o++) t[o] = -1;
					for (o = 0; o < r.count(); o++) t[r.get(n.storeDimIndex, o)] = o
				}
			})
		}, vv = function(t, e, n) {
			return Ao(t._getCategory(e, n), null)
		}, mv = function(t, e) {
			var n = t._idList[e];
			return n = null == (n = null == n && null != t._idDimIdx ? vv(t, t._idDimIdx, e) : n) ?
				"e\0\0" + e : n
		}, _v = function(t) {
			return t = F(t) ? t : null != t ? [t] : []
		}, bv = function(t) {
			var e = new c(t._schema || Mv(t.dimensions, t._getDimInfo, t), t.hostModel);
			return xv(e, t), e
		}, xv = function(e, n) {
			E(Iv.concat(n.__wrappedMethods || []), function(t) {
				n.hasOwnProperty(t) && (e[t] = n[t])
			}), e.__wrappedMethods = n.__wrappedMethods, E(Cv, function(t) {
				e[t] = y(n[t])
			}), e._calculationInfo = P({}, n._calculationInfo)
		}, void(wv = function(t, e) {
			var n = t._nameList,
				i = t._idList,
				r = t._nameDimIdx,
				o = t._idDimIdx,
				a = n[e],
				s = i[e];
			null == a && null != r && (n[e] = a = vv(t, r, e)), null == s && null != o && (i[e] = s =
				vv(t, o, e)), null == s && null != a && (s = a, 1 < (r = (n = t._nameRepeatCount)[
				a] = (n[a] || 0) + 1) && (s += "__ec__" + r), i[e] = s)
		})), c);

	function c(t, e) {
		this.type = "list", this._dimOmitted = !1, this._nameList = [], this._idList = [], this._visual = {}, this
			._layout = {}, this._itemVisuals = [], this._itemLayouts = [], this._graphicEls = [], this
			._approximateExtent = {}, this._calculationInfo = {}, this.hasItemOption = !1, this
			.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "lttbDownSample", "map"], this
			.CHANGABLE_METHODS = ["filterSelf", "selectRange"];
		for (var n, i, r = !(this.DOWNSAMPLE_METHODS = ["downSample", "lttbDownSample"]), o = (dv(t) ? (n = t
					.dimensions, this._dimOmitted = t.isDimensionOmitted(), this._schema = t) : (r = !0, n = t),
				n = n || ["x", "y"], {}), a = [], s = {}, l = !1, u = {}, h = 0; h < n.length; h++) {
			var c = n[h],
				c = V(c) ? new lv({
					name: c
				}) : c instanceof lv ? c : new lv(c),
				p = c.name,
				d = (c.type = c.type || "float", c.coordDim || (c.coordDim = p, c.coordDimIndex = 0), c.otherDims =
					c.otherDims || {});
			a.push(p), null != u[p] && (l = !0), (o[p] = c).createInvertedIndices && (s[p] = []), 0 === d
				.itemName && (this._nameDimIdx = h), 0 === d.itemId && (this._idDimIdx = h), r && (c.storeDimIndex =
					h)
		}
		this.dimensions = a, this._dimInfos = o, this._initGetDimensionInfo(l), this.hostModel = e, this
			._invertedIndicesMap = s, this._dimOmitted && (i = this._dimIdxToName = N(), E(a, function(t) {
				i.set(o[t].storeDimIndex, t)
			}))
	}

	function kv(t, e) {
		af(t) || (t = lf(t));
		for (var n, i, r = (e = e || {}).coordDimensions || [], o = e.dimensionsDefine || t.dimensionsDefine || [],
				a = N(), s = [], l = (u = t, n = r, p = e.dimensionsCount, i = Math.max(u.dimensionsDetectedCount ||
					1, n.length, o.length, p || 0), E(n, function(t) {
					O(t) && (t = t.dimsDef) && (i = Math.max(i, t.length))
				}), i), u = e.canOmitUnusedDimensions && 30 < l, h = o === t.dimensionsDefine, c = h ? gv(t) : fv(
				o), p = e.encodeDefine, d = N(p = !p && e.encodeDefaulter ? e.encodeDefaulter(t, l) : p), f =
				new dg(l), g = 0; g < f.length; g++) f[g] = -1;

		function y(t) {
			var e, n, i, r = f[t];
			return r < 0 ? (e = O(e = o[t]) ? e : {
					name: e
				}, n = new lv, null != (i = e.name) && null != c.get(i) && (n.name = n.displayName = i), null !=
				e.type && (n.type = e.type), null != e.displayName && (n.displayName = e.displayName), f[t] = s
				.length, n.storeDimIndex = t, s.push(n), n) : s[r]
		}
		if (!u)
			for (g = 0; g < l; g++) y(g);
		d.each(function(t, n) {
			var i, t = So(t).slice();
			1 === t.length && !V(t[0]) && t[0] < 0 ? d.set(n, !1) : (i = d.set(n, []), E(t, function(t, e) {
				t = V(t) ? c.get(t) : t;
				null != t && t < l && v(y(i[e] = t), n, e)
			}))
		});
		var m = 0;

		function v(t, e, n) {
			null != Qp.get(e) ? t.otherDims[e] = n : (t.coordDim = e, t.coordDimIndex = n, a.set(e, !0))
		}
		E(r, function(t) {
			V(t) ? (o = t, r = {}) : (o = (r = t).name, t = r.ordinalMeta, r.ordinalMeta = null, (r = P({},
					r)).ordinalMeta = t, n = r.dimsDef, i = r.otherDims, r.name = r.coordDim = r
				.coordDimIndex = r.dimsDef = r.otherDims = null);
			var n, i, r, o, e = d.get(o);
			if (!1 !== e) {
				if (!(e = So(e)).length)
					for (var a = 0; a < (n && n.length || 1); a++) {
						for (; m < l && null != y(m).coordDim;) m++;
						m < l && e.push(m++)
					}
				E(e, function(t, e) {
					t = y(t);
					h && null != r.type && (t.type = r.type), v(z(t, r), o, e), null == t.name &&
						n && (O(e = n[e]) || (e = {
								name: e
							}), t.name = t.displayName = e.name, t.defaultTooltip = e
							.defaultTooltip), i && z(t.otherDims, i)
				})
			}
		});
		var _ = e.generateCoord,
			x = null != (b = e.generateCoordCount),
			b = _ ? b || 1 : 0,
			w = _ || "value";

		function S(t) {
			null == t.name && (t.name = t.coordDim)
		}
		if (u) E(s, function(t) {
			S(t)
		}), s.sort(function(t, e) {
			return t.storeDimIndex - e.storeDimIndex
		});
		else
			for (var M = 0; M < l; M++) {
				var T = y(M);
				null == T.coordDim && (T.coordDim = function(t, e, n) {
						if (n || e.hasKey(t)) {
							for (var i = 0; e.hasKey(t + i);) i++;
							t += i
						}
						return e.set(t, !0), t
					}(w, a, x), T.coordDimIndex = 0, (!_ || b <= 0) && (T.isExtraCoord = !0), b--), S(T), null != T
					.type || pd(t, M) !== sd.Must && (!T.isExtraCoord || null == T.otherDims.itemName && null == T
						.otherDims.seriesName) || (T.type = "ordinal")
			}
		for (var I = s, C = N(), D = 0; D < I.length; D++) {
			var k = I[D],
				A = k.name,
				L = C.get(A) || 0;
			0 < L && (k.name = A + (L - 1)), L++, C.set(A, L)
		}
		return new cv({
			source: t,
			dimensions: s,
			fullDimensionCount: l,
			dimensionOmitted: u
		})
	}
	var Av = function(t) {
		this.coordSysDims = [], this.axisMap = N(), this.categoryAxisMap = N(), this.coordSysName = t
	};
	var Lv = {
		cartesian2d: function(t, e, n, i) {
			var r = t.getReferringComponents("xAxis", Fo).models[0],
				t = t.getReferringComponents("yAxis", Fo).models[0];
			e.coordSysDims = ["x", "y"], n.set("x", r), n.set("y", t), Pv(r) && (i.set("x", r), e
					.firstCategoryDimIndex = 0), Pv(t) && (i.set("y", t), null == e
				.firstCategoryDimIndex) && (e.firstCategoryDimIndex = 1)
		},
		singleAxis: function(t, e, n, i) {
			t = t.getReferringComponents("singleAxis", Fo).models[0];
			e.coordSysDims = ["single"], n.set("single", t), Pv(t) && (i.set("single", t), e
				.firstCategoryDimIndex = 0)
		},
		polar: function(t, e, n, i) {
			var t = t.getReferringComponents("polar", Fo).models[0],
				r = t.findAxisModel("radiusAxis"),
				t = t.findAxisModel("angleAxis");
			e.coordSysDims = ["radius", "angle"], n.set("radius", r), n.set("angle", t), Pv(r) && (i.set(
				"radius", r), e.firstCategoryDimIndex = 0), Pv(t) && (i.set("angle", t), null == e
				.firstCategoryDimIndex) && (e.firstCategoryDimIndex = 1)
		},
		geo: function(t, e, n, i) {
			e.coordSysDims = ["lng", "lat"]
		},
		parallel: function(t, i, r, o) {
			var a = t.ecModel,
				t = a.getComponent("parallel", t.get("parallelIndex")),
				s = i.coordSysDims = t.dimensions.slice();
			E(t.parallelAxisIndex, function(t, e) {
				var t = a.getComponent("parallelAxis", t),
					n = s[e];
				r.set(n, t), Pv(t) && (o.set(n, t), null == i.firstCategoryDimIndex) && (i
					.firstCategoryDimIndex = e)
			})
		}
	};

	function Pv(t) {
		return "category" === t.get("type")
	}

	function Ov(t, e, n) {
		var i, r, o, a, s, l, u, h, c, p = (n = n || {}).byIndex,
			d = n.stackedCoordDimension,
			f = (dv(e.schema) ? (r = e.schema, i = r.dimensions, o = e.store) : i = e, !(!t || !t.get("stack")));
		return E(i, function(t, e) {
			V(t) && (i[e] = t = {
				name: t
			}), f && !t.isExtraCoord && (p || a || !t.ordinalMeta || (a = t), s || "ordinal" === t
				.type || "time" === t.type || d && d !== t.coordDim || (s = t))
		}), !s || p || a || (p = !0), s && (l = "__\0ecstackresult_" + t.id, u = "__\0ecstackedover_" + t.id,
			a && (a.createInvertedIndices = !0), h = s.coordDim, n = s.type, c = 0, E(i, function(t) {
				t.coordDim === h && c++
			}), e = {
				name: l,
				coordDim: h,
				coordDimIndex: c,
				type: n,
				isExtraCoord: !0,
				isCalculationCoord: !0,
				storeDimIndex: i.length
			}, t = {
				name: u,
				coordDim: u,
				coordDimIndex: c + 1,
				type: n,
				isExtraCoord: !0,
				isCalculationCoord: !0,
				storeDimIndex: i.length + 1
			}, r ? (o && (e.storeDimIndex = o.ensureCalculationDimension(u, n), t.storeDimIndex = o
					.ensureCalculationDimension(l, n)), r.appendCalculationDimension(e), r
				.appendCalculationDimension(t)) : (i.push(e), i.push(t))), {
			stackedDimension: s && s.name,
			stackedByDimension: a && a.name,
			isStackedByIndex: p,
			stackedOverDimension: u,
			stackResultDimension: l
		}
	}

	function Rv(t, e) {
		return !!e && e === t.getCalculationInfo("stackedDimension")
	}

	function Nv(t, e) {
		return Rv(t, e) ? t.getCalculationInfo("stackResultDimension") : e
	}

	function Ev(t, e, n) {
		n = n || {};
		var i, r, o, a, s, l, u = e.getSourceManager(),
			h = !1,
			t = (t ? (h = !0, i = lf(t)) : h = (i = u.getSource()).sourceFormat === Jp, function(t) {
				var e = t.get("coordinateSystem"),
					n = new Av(e);
				if (e = Lv[e]) return e(t, n, n.axisMap, n.categoryAxisMap), n
			}(e)),
			c = (r = t, c = (c = e).get("coordinateSystem"), c = Ld.get(c), p = (p = r && r.coordSysDims ? B(r
				.coordSysDims,
				function(t) {
					var e = {
							name: t
						},
						t = r.axisMap.get(t);
					return t && (t = t.get("type"), e.type = "category" === (t = t) ? "ordinal" : "time" ===
						t ? "time" : "float"), e
				}) : p) || c && (c.getDimensionsInfo ? c.getDimensionsInfo() : c.dimensions.slice()) || ["x",
				"y"
			]),
			p = n.useEncodeDefaulter,
			p = D(p) ? p : p ? S(ud, c, e) : null,
			c = {
				coordDimensions: c,
				generateCoord: n.generateCoord,
				encodeDefine: e.getEncode(),
				encodeDefaulter: p,
				canOmitUnusedDimensions: !h
			},
			p = kv(i, c),
			d = (c = p.dimensions, o = n.createInvertedIndices, (a = t) && E(c, function(t, e) {
				var n = t.coordDim,
					n = a.categoryAxisMap.get(n);
				n && (null == s && (s = e), t.ordinalMeta = n.getOrdinalMeta(), o) && (t
					.createInvertedIndices = !0), null != t.otherDims.itemName && (l = !0)
			}), l || null == s || (c[s].otherDims.itemName = 0), s),
			n = h ? null : u.getSharedDataStore(p),
			t = Ov(e, {
				schema: p,
				store: n
			}),
			c = new Dv(p, e),
			p = (c.setCalculationInfo(t), null == d || (u = i).sourceFormat !== Jp || F(Io(function(t) {
				var e = 0;
				for (; e < t.length && null == t[e];) e++;
				return t[e]
			}(u.data || []))) ? null : function(t, e, n, i) {
				return i === d ? n : this.defaultDimValueGetter(t, e, n, i)
			});
		return c.hasItemOption = !1, c.initData(h ? i : n, null, p), c
	}
	Bv.prototype.getSetting = function(t) {
		return this._setting[t]
	}, Bv.prototype.unionExtent = function(t) {
		var e = this._extent;
		t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1])
	}, Bv.prototype.unionExtentFromData = function(t, e) {
		this.unionExtent(t.getApproximateExtent(e))
	}, Bv.prototype.getExtent = function() {
		return this._extent.slice()
	}, Bv.prototype.setExtent = function(t, e) {
		var n = this._extent;
		isNaN(t) || (n[0] = t), isNaN(e) || (n[1] = e)
	}, Bv.prototype.isInExtentRange = function(t) {
		return this._extent[0] <= t && this._extent[1] >= t
	}, Bv.prototype.isBlank = function() {
		return this._isBlank
	}, Bv.prototype.setBlank = function(t) {
		this._isBlank = t
	};
	var zv = Bv;

	function Bv(t) {
		this._setting = t || {}, this._extent = [1 / 0, -1 / 0]
	}
	Qo(zv);
	var Fv = 0,
		Vv = (Gv.createByAxisModel = function(t) {
			var t = t.option,
				e = t.data,
				e = e && B(e, Hv);
			return new Gv({
				categories: e,
				needCollect: !e,
				deduplication: !1 !== t.dedplication
			})
		}, Gv.prototype.getOrdinal = function(t) {
			return this._getOrCreateMap().get(t)
		}, Gv.prototype.parseAndCollect = function(t) {
			var e, n, i = this._needCollect;
			return V(t) || i ? (i && !this._deduplication ? (n = this.categories.length, this.categories[n] =
				t) : null == (n = (e = this._getOrCreateMap()).get(t)) && (i ? (n = this.categories.length,
					this.categories[n] = t, e.set(t, n)) : n = NaN), n) : t
		}, Gv.prototype._getOrCreateMap = function() {
			return this._map || (this._map = N(this.categories))
		}, Gv);

	function Gv(t) {
		this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t
			.deduplication, this.uid = ++Fv
	}

	function Hv(t) {
		return O(t) && null != t.value ? t.value : t + ""
	}

	function Wv(t) {
		return "interval" === t.type || "log" === t.type
	}

	function Uv(t, e, n, i) {
		var r = {},
			o = t[1] - t[0],
			o = r.interval = yo(o / e, !0),
			e = (null != n && o < n && (o = r.interval = n), null != i && i < o && (o = r.interval = i), r
				.intervalPrecision = Yv(o)),
			n = r.niceTickExtent = [io(Math.ceil(t[0] / o) * o, e), io(Math.floor(t[1] / o) * o, e)];
		return i = n, o = t, isFinite(i[0]) || (i[0] = o[0]), isFinite(i[1]) || (i[1] = o[1]), qv(i, 0, o), qv(i, 1,
			o), i[0] > i[1] && (i[0] = i[1]), r
	}

	function Xv(t) {
		var e = Math.pow(10, go(t)),
			t = t / e;
		return t ? 2 === t ? t = 3 : 3 === t ? t = 5 : t *= 2 : t = 1, io(t * e)
	}

	function Yv(t) {
		return oo(t) + 2
	}

	function qv(t, e, n) {
		t[e] = Math.max(Math.min(t[e], n[1]), n[0])
	}

	function Zv(t, e) {
		return t >= e[0] && t <= e[1]
	}

	function jv(t, e) {
		return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0])
	}

	function Kv(t, e) {
		return t * (e[1] - e[0]) + e[0]
	}
	u(Jv, $v = zv), Jv.prototype.parse = function(t) {
			return null == t ? NaN : V(t) ? this._ordinalMeta.getOrdinal(t) : Math.round(t)
		}, Jv.prototype.contain = function(t) {
			return Zv(t = this.parse(t), this._extent) && null != this._ordinalMeta.categories[t]
		}, Jv.prototype.normalize = function(t) {
			return jv(t = this._getTickNumber(this.parse(t)), this._extent)
		}, Jv.prototype.scale = function(t) {
			return t = Math.round(Kv(t, this._extent)), this.getRawOrdinalNumber(t)
		}, Jv.prototype.getTicks = function() {
			for (var t = [], e = this._extent, n = e[0]; n <= e[1];) t.push({
				value: n
			}), n++;
			return t
		}, Jv.prototype.getMinorTicks = function(t) {}, Jv.prototype.setSortInfo = function(t) {
			if (null == t) this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;
			else {
				for (var e = t.ordinalNumbers, n = this._ordinalNumbersByTick = [], i = this
						._ticksByOrdinalNumber = [], r = 0, o = this._ordinalMeta.categories.length, a = Math.min(o,
							e.length); r < a; ++r) {
					var s = e[r];
					i[n[r] = s] = r
				}
				for (var l = 0; r < o; ++r) {
					for (; null != i[l];) l++;
					n.push(l), i[l] = r
				}
			}
		}, Jv.prototype._getTickNumber = function(t) {
			var e = this._ticksByOrdinalNumber;
			return e && 0 <= t && t < e.length ? e[t] : t
		}, Jv.prototype.getRawOrdinalNumber = function(t) {
			var e = this._ordinalNumbersByTick;
			return e && 0 <= t && t < e.length ? e[t] : t
		}, Jv.prototype.getLabel = function(t) {
			if (!this.isBlank()) return t = this.getRawOrdinalNumber(t.value), null == (t = this._ordinalMeta
				.categories[t]) ? "" : t + ""
		}, Jv.prototype.count = function() {
			return this._extent[1] - this._extent[0] + 1
		}, Jv.prototype.unionExtentFromData = function(t, e) {
			this.unionExtent(t.getApproximateExtent(e))
		}, Jv.prototype.isInExtentRange = function(t) {
			return t = this._getTickNumber(t), this._extent[0] <= t && this._extent[1] >= t
		}, Jv.prototype.getOrdinalMeta = function() {
			return this._ordinalMeta
		}, Jv.prototype.calcNiceTicks = function() {}, Jv.prototype.calcNiceExtent = function() {}, Jv.type =
		"ordinal";
	var $v, Qv = Jv;

	function Jv(t) {
		var t = $v.call(this, t) || this,
			e = (t.type = "ordinal", t.getSetting("ordinalMeta"));
		return F(e = e || new Vv({})) && (e = new Vv({
			categories: B(e, function(t) {
				return O(t) ? t.value : t
			})
		})), t._ordinalMeta = e, t._extent = t.getSetting("extent") || [0, e.categories.length - 1], t
	}
	zv.registerClass(Qv);
	var t_, e_ = io,
		n_ = (u(i_, t_ = zv), i_.prototype.parse = function(t) {
			return t
		}, i_.prototype.contain = function(t) {
			return Zv(t, this._extent)
		}, i_.prototype.normalize = function(t) {
			return jv(t, this._extent)
		}, i_.prototype.scale = function(t) {
			return Kv(t, this._extent)
		}, i_.prototype.setExtent = function(t, e) {
			var n = this._extent;
			isNaN(t) || (n[0] = parseFloat(t)), isNaN(e) || (n[1] = parseFloat(e))
		}, i_.prototype.unionExtent = function(t) {
			var e = this._extent;
			t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), this.setExtent(e[0], e[1])
		}, i_.prototype.getInterval = function() {
			return this._interval
		}, i_.prototype.setInterval = function(t) {
			this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = Yv(t)
		}, i_.prototype.getTicks = function(t) {
			var e = this._interval,
				n = this._extent,
				i = this._niceExtent,
				r = this._intervalPrecision,
				o = [];
			if (e) {
				n[0] < i[0] && o.push(t ? {
					value: e_(i[0] - e, r)
				} : {
					value: n[0]
				});
				for (var a = i[0]; a <= i[1] && (o.push({
						value: a
					}), (a = e_(a + e, r)) !== o[o.length - 1].value);)
					if (1e4 < o.length) return [];
				var s = o.length ? o[o.length - 1].value : i[1];
				n[1] > s && o.push(t ? {
					value: e_(s + e, r)
				} : {
					value: n[1]
				})
			}
			return o
		}, i_.prototype.getMinorTicks = function(t) {
			for (var e = this.getTicks(!0), n = [], i = this.getExtent(), r = 1; r < e.length; r++) {
				for (var o = e[r], a = e[r - 1], s = 0, l = [], u = (o.value - a.value) / t; s < t - 1;) {
					var h = e_(a.value + (s + 1) * u);
					h > i[0] && h < i[1] && l.push(h), s++
				}
				n.push(l)
			}
			return n
		}, i_.prototype.getLabel = function(t, e) {
			return null == t ? "" : (null == (e = e && e.precision) ? e = oo(t.value) || 0 : "auto" === e && (
				e = this._intervalPrecision), Tp(e_(t.value, e, !0)))
		}, i_.prototype.calcNiceTicks = function(t, e, n) {
			t = t || 5;
			var i = this._extent,
				r = i[1] - i[0];
			isFinite(r) && (r < 0 && i.reverse(), r = Uv(i, t, e, n), this._intervalPrecision = r
				.intervalPrecision, this._interval = r.interval, this._niceExtent = r.niceTickExtent)
		}, i_.prototype.calcNiceExtent = function(t) {
			var e = this._extent,
				n = (e[0] === e[1] && (0 !== e[0] ? (n = Math.abs(e[0]), t.fixMax || (e[1] += n / 2), e[0] -=
					n / 2) : e[1] = 1), e[1] - e[0]),
				n = (isFinite(n) || (e[0] = 0, e[1] = 1), this.calcNiceTicks(t.splitNumber, t.minInterval, t
					.maxInterval), this._interval);
			t.fixMin || (e[0] = e_(Math.floor(e[0] / n) * n)), t.fixMax || (e[1] = e_(Math.ceil(e[1] / n) * n))
		}, i_.prototype.setNiceExtent = function(t, e) {
			this._niceExtent = [t, e]
		}, i_.type = "interval", i_);

	function i_() {
		var t = null !== t_ && t_.apply(this, arguments) || this;
		return t.type = "interval", t._interval = 0, t._intervalPrecision = 2, t
	}
	zv.registerClass(n_);
	var r_ = "undefined" != typeof Float32Array,
		o_ = r_ ? Float32Array : Array;

	function a_(t) {
		return F(t) ? r_ ? new Float32Array(t) : t : new o_(t)
	}
	var s_ = "__ec_stack_";

	function l_(t) {
		return t.get("stack") || s_ + t.seriesIndex
	}

	function u_(t) {
		return t.dim + t.index
	}

	function h_(t, e) {
		var n = [];
		return e.eachSeriesByType(t, function(t) {
			d_(t) && n.push(t)
		}), n
	}

	function c_(t) {
		var a, d, l = function(t) {
				var e, l = {},
					n = (E(t, function(t) {
						var e = t.coordinateSystem.getBaseAxis();
						if ("time" === e.type || "value" === e.type)
							for (var t = t.getData(), n = e.dim + "_" + e.index, i = t.getDimensionIndex(t
									.mapDimension(e.dim)), r = t.getStore(), o = 0, a = r.count(); o < a; ++
								o) {
								var s = r.get(i, o);
								l[n] ? l[n].push(s) : l[n] = [s]
							}
					}), {});
				for (e in l)
					if (l.hasOwnProperty(e)) {
						var i = l[e];
						if (i) {
							i.sort(function(t, e) {
								return t - e
							});
							for (var r = null, o = 1; o < i.length; ++o) {
								var a = i[o] - i[o - 1];
								0 < a && (r = null === r ? a : Math.min(r, a))
							}
							n[e] = r
						}
					} return n
			}(t),
			u = [];
		return E(t, function(t) {
			var e, n = t.coordinateSystem.getBaseAxis(),
				i = n.getExtent(),
				r = (e = "category" === n.type ? n.getBandWidth() : "value" === n.type || "time" === n
					.type ? (e = n.dim + "_" + n.index, e = l[e], r = Math.abs(i[1] - i[0]), o = n.scale
						.getExtent(), o = Math.abs(o[1] - o[0]), e ? r / o * e : r) : (o = t.getData(), Math
						.abs(i[1] - i[0]) / o.count()), W(t.get("barWidth"), e)),
				i = W(t.get("barMaxWidth"), e),
				o = W(t.get("barMinWidth") || (f_(t) ? .5 : 1), e),
				a = t.get("barGap"),
				s = t.get("barCategoryGap");
			u.push({
				bandWidth: e,
				barWidth: r,
				barMaxWidth: i,
				barMinWidth: o,
				barGap: a,
				barCategoryGap: s,
				axisKey: u_(n),
				stackId: l_(t)
			})
		}), a = {}, E(u, function(t, e) {
			var n = t.axisKey,
				i = t.bandWidth,
				i = a[n] || {
					bandWidth: i,
					remainedWidth: i,
					autoWidthCount: 0,
					categoryGap: null,
					gap: "20%",
					stacks: {}
				},
				r = i.stacks,
				n = (a[n] = i, t.stackId),
				o = (r[n] || i.autoWidthCount++, r[n] = r[n] || {
					width: 0,
					maxWidth: 0
				}, t.barWidth),
				o = (o && !r[n].width && (r[n].width = o, o = Math.min(i.remainedWidth, o), i
					.remainedWidth -= o), t.barMaxWidth),
				o = (o && (r[n].maxWidth = o), t.barMinWidth),
				r = (o && (r[n].minWidth = o), t.barGap),
				n = (null != r && (i.gap = r), t.barCategoryGap);
			null != n && (i.categoryGap = n)
		}), d = {}, E(a, function(t, n) {
			d[n] = {};
			var i, e = t.stacks,
				r = t.bandWidth,
				o = t.categoryGap,
				a = (null == o && (a = ct(e).length, o = Math.max(35 - 4 * a, 15) + "%"), W(o, r)),
				s = W(t.gap, 1),
				l = t.remainedWidth,
				u = t.autoWidthCount,
				h = (l - a) / (u + (u - 1) * s),
				h = Math.max(h, 0),
				c = (E(e, function(t) {
					var e, n = t.maxWidth,
						i = t.minWidth;
					t.width ? (e = t.width, n && (e = Math.min(e, n)), i && (e = Math.max(e, i)), t
						.width = e, l -= e + s * e, u--) : (e = h, n && n < e && (e = Math.min(
						n, l)), (e = i && e < i ? i : e) !== h && (t.width = e, l -= e + s *
						e, u--))
				}), h = (l - a) / (u + (u - 1) * s), h = Math.max(h, 0), 0),
				p = (E(e, function(t, e) {
					t.width || (t.width = h), c += (i = t).width * (1 + s)
				}), i && (c -= i.width * s), -c / 2);
			E(e, function(t, e) {
				d[n][e] = d[n][e] || {
					bandWidth: r,
					offset: p,
					width: t.width
				}, p += t.width * (1 + s)
			})
		}), d
	}

	function p_(t, e) {
		var t = h_(t, e),
			r = c_(t);
		E(t, function(t) {
			var e = t.getData(),
				n = t.coordinateSystem.getBaseAxis(),
				t = l_(t),
				n = r[u_(n)][t],
				t = n.offset,
				i = n.width;
			e.setLayout({
				bandWidth: n.bandWidth,
				offset: t,
				size: i
			})
		})
	}

	function d_(t) {
		return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type
	}

	function f_(t) {
		return t.pipelineContext && t.pipelineContext.large
	}
	u(m_, g_ = n_), m_.prototype.getLabel = function(t) {
		var e = this.getSetting("useUTC");
		return up(t.value, rp[function(t) {
			switch (t) {
				case "year":
				case "month":
					return "day";
				case "millisecond":
					return "millisecond";
				default:
					return "second"
			}
		}(lp(this._minLevelUnit))] || rp.second, e, this.getSetting("locale"))
	}, m_.prototype.getFormattedLabel = function(t, e, n) {
		var i = this.getSetting("useUTC"),
			r = this.getSetting("locale"),
			o = null;
		if (V(n)) o = n;
		else if (D(n)) o = n(t.value, e, {
			level: t.level
		});
		else {
			var a = P({}, np);
			if (0 < t.level)
				for (var s = 0; s < op.length; ++s) a[op[s]] = "{primary|" + a[op[s]] + "}";
			var l = n ? !1 === n.inherit ? n : z(n, a) : a,
				u = hp(t.value, i);
			if (l[u]) o = l[u];
			else if (l.inherit) {
				for (s = ap.indexOf(u) - 1; 0 <= s; --s)
					if (l[u]) {
						o = l[u];
						break
					} o = o || a.none
			}
			F(o) && (e = null == t.level ? 0 : 0 <= t.level ? t.level : o.length + t.level, o = o[e = Math.min(
				e, o.length - 1)])
		}
		return up(new Date(t.value), o, i, r)
	}, m_.prototype.getTicks = function() {
		var t = this._interval,
			e = this._extent,
			n = [];
		return t && (n.push({
			value: e[0],
			level: 0
		}), t = this.getSetting("useUTC"), t = function(t, w, S, M) {
			var e = ap,
				n = 0;

			function i(t, e, n) {
				var i = [],
					r = !e.length;
				if (! function(t, e, n, i) {
						function r(t) {
							return cp(c, t, i) === cp(p, t, i)
						}

						function o() {
							return r("year")
						}

						function a() {
							return o() && r("month")
						}

						function s() {
							return a() && r("day")
						}

						function l() {
							return s() && r("hour")
						}

						function u() {
							return l() && r("minute")
						}

						function h() {
							return u() && r("second")
						}
						var c = po(e),
							p = po(n);
						switch (t) {
							case "year":
								return o();
							case "month":
								return a();
							case "day":
								return s();
							case "hour":
								return l();
							case "minute":
								return u();
							case "second":
								return h();
							case "millisecond":
								return h() && r("millisecond")
						}
					}(lp(t), M[0], M[1], S)) {
					r && (e = [{
						value: function(t, e, n) {
							var i = new Date(t);
							switch (lp(e)) {
								case "year":
								case "month":
									i[_p(n)](0);
								case "day":
									i[xp(n)](1);
								case "hour":
									i[bp(n)](0);
								case "minute":
									i[wp(n)](0);
								case "second":
									i[Sp(n)](0), i[Mp(n)](0)
							}
							return i.getTime()
						}(new Date(M[0]), t, S)
					}, {
						value: M[1]
					}]);
					for (var o, a, s = 0; s < e.length - 1; s++) {
						var l = e[s].value,
							u = e[s + 1].value;
						if (l !== u) {
							var h = void 0,
								c = void 0,
								p = void 0;
							switch (t) {
								case "year":
									h = Math.max(1, Math.round(w / ep / 365)), c = pp(S), p = S ?
										"setUTCFullYear" : "setFullYear";
									break;
								case "half-year":
								case "quarter":
								case "month":
									a = w, h = 6 < (a /= 30 * ep) ? 6 : 3 < a ? 3 : 2 < a ? 2 : 1, c =
										dp(S), p = _p(S);
									break;
								case "week":
								case "half-week":
								case "day":
									a = w, h = 16 < (a /= ep) ? 16 : 7.5 < a ? 7 : 3.5 < a ? 4 : 1.5 <
										a ? 2 : 1, c = fp(S), p = xp(S), 0;
									break;
								case "half-day":
								case "quarter-day":
								case "hour":
									o = w, h = 12 < (o /= tp) ? 12 : 6 < o ? 6 : 3.5 < o ? 4 : 2 < o ?
										2 : 1, c = gp(S), p = bp(S);
									break;
								case "minute":
									h = __(w, !0), c = yp(S), p = wp(S);
									break;
								case "second":
									h = __(w, !1), c = mp(S), p = Sp(S);
									break;
								case "millisecond":
									h = yo(w, !0), c = vp(S), p = Mp(S)
							}
							b = x = _ = v = m = y = g = f = d = void 0;
							for (var d = h, f = l, g = u, y = c, m = p, v = i, _ = new Date(f), x = f,
									b = _[y](); x < g && x <= M[1];) v.push({
								value: x
							}), _[m](b += d), x = _.getTime();
							v.push({
								value: x,
								notAdd: !0
							}), "year" === t && 1 < n.length && 0 === s && n.unshift({
								value: n[0].value - h
							})
						}
					}
					for (s = 0; s < i.length; s++) n.push(i[s])
				}
			}
			for (var r = [], o = [], a = 0, s = 0, l = 0; l < e.length && n++ < 1e4; ++l) {
				var u = lp(e[l]);
				if (function(t) {
						return t === lp(t)
					}(e[l])) {
					i(e[l], r[r.length - 1] || [], o);
					var h = e[l + 1] ? lp(e[l + 1]) : null;
					if (u !== h) {
						if (o.length) {
							s = a, o.sort(function(t, e) {
								return t.value - e.value
							});
							for (var c = [], p = 0; p < o.length; ++p) {
								var d = o[p].value;
								0 !== p && o[p - 1].value === d || (c.push(o[p]), d >= M[0] && d <= M[
									1] && a++)
							}
							u = (M[1] - M[0]) / w;
							if (1.5 * u < a && u / 1.5 < s) break;
							if (r.push(c), u < a || t === e[l]) break
						}
						o = []
					}
				}
			}
			for (var f = ht(B(r, function(t) {
					return ht(t, function(t) {
						return t.value >= M[0] && t.value <= M[1] && !t.notAdd
					})
				}), function(t) {
					return 0 < t.length
				}), g = [], y = f.length - 1, l = 0; l < f.length; ++l)
				for (var m = f[l], v = 0; v < m.length; ++v) g.push({
					value: m[v].value,
					level: y - l
				});
			g.sort(function(t, e) {
				return t.value - e.value
			});
			for (var _ = [], l = 0; l < g.length; ++l) 0 !== l && g[l].value === g[l - 1].value || _
				.push(g[l]);
			return _
		}(this._minLevelUnit, this._approxInterval, t, e), (n = n.concat(t)).push({
			value: e[1],
			level: 0
		})), n
	}, m_.prototype.calcNiceExtent = function(t) {
		var e, n = this._extent;
		n[0] === n[1] && (n[0] -= ep, n[1] += ep), n[1] === -1 / 0 && n[0] === 1 / 0 && (e = new Date, n[1] = +
			new Date(e.getFullYear(), e.getMonth(), e.getDate()), n[0] = n[1] - ep), this.calcNiceTicks(t
			.splitNumber, t.minInterval, t.maxInterval)
	}, m_.prototype.calcNiceTicks = function(t, e, n) {
		var i = this._extent,
			i = i[1] - i[0],
			i = (this._approxInterval = i / (t = t || 10), null != e && this._approxInterval < e && (this
					._approxInterval = e), null != n && this._approxInterval > n && (this._approxInterval = n),
				v_.length),
			t = Math.min(function(t, e, n, i) {
				for (; n < i;) {
					var r = n + i >>> 1;
					t[r][1] < e ? n = 1 + r : i = r
				}
				return n
			}(v_, this._approxInterval, 0, i), i - 1);
		this._interval = v_[t][1], this._minLevelUnit = v_[Math.max(t - 1, 0)][0]
	}, m_.prototype.parse = function(t) {
		return G(t) ? t : +po(t)
	}, m_.prototype.contain = function(t) {
		return Zv(this.parse(t), this._extent)
	}, m_.prototype.normalize = function(t) {
		return jv(this.parse(t), this._extent)
	}, m_.prototype.scale = function(t) {
		return Kv(t, this._extent)
	}, m_.type = "time";
	var g_, y_ = m_;

	function m_(t) {
		t = g_.call(this, t) || this;
		return t.type = "time", t
	}
	var v_ = [
		["second", Qc],
		["minute", Jc],
		["hour", tp],
		["quarter-day", 6 * tp],
		["half-day", 12 * tp],
		["day", 1.2 * ep],
		["half-week", 3.5 * ep],
		["week", 7 * ep],
		["month", 31 * ep],
		["quarter", 95 * ep],
		["half-year", jo / 2],
		["year", jo]
	];

	function __(t, e) {
		return 30 < (t /= e ? Jc : Qc) ? 30 : 20 < t ? 20 : 15 < t ? 15 : 10 < t ? 10 : 5 < t ? 5 : 2 < t ? 2 : 1
	}
	zv.registerClass(y_);
	var x_, b_ = zv.prototype,
		w_ = n_.prototype,
		S_ = io,
		M_ = Math.floor,
		T_ = Math.ceil,
		I_ = Math.pow,
		C_ = Math.log,
		D_ = (u(k_, x_ = zv), k_.prototype.getTicks = function(t) {
			var e = this._originalScale,
				n = this._extent,
				i = e.getExtent();
			return B(w_.getTicks.call(this, t), function(t) {
				var t = t.value,
					e = io(I_(this.base, t)),
					e = t === n[0] && this._fixMin ? A_(e, i[0]) : e;
				return {
					value: t === n[1] && this._fixMax ? A_(e, i[1]) : e
				}
			}, this)
		}, k_.prototype.setExtent = function(t, e) {
			var n = C_(this.base);
			t = C_(Math.max(0, t)) / n, e = C_(Math.max(0, e)) / n, w_.setExtent.call(this, t, e)
		}, k_.prototype.getExtent = function() {
			var t = this.base,
				e = b_.getExtent.call(this);
			e[0] = I_(t, e[0]), e[1] = I_(t, e[1]);
			t = this._originalScale.getExtent();
			return this._fixMin && (e[0] = A_(e[0], t[0])), this._fixMax && (e[1] = A_(e[1], t[1])), e
		}, k_.prototype.unionExtent = function(t) {
			this._originalScale.unionExtent(t);
			var e = this.base;
			t[0] = C_(t[0]) / C_(e), t[1] = C_(t[1]) / C_(e), b_.unionExtent.call(this, t)
		}, k_.prototype.unionExtentFromData = function(t, e) {
			this.unionExtent(t.getApproximateExtent(e))
		}, k_.prototype.calcNiceTicks = function(t) {
			t = t || 10;
			var e = this._extent,
				n = e[1] - e[0];
			if (!(n == 1 / 0 || n <= 0)) {
				var i = fo(n);
				for (t / n * i <= .5 && (i *= 10); !isNaN(i) && Math.abs(i) < 1 && 0 < Math.abs(i);) i *= 10;
				t = [io(T_(e[0] / i) * i), io(M_(e[1] / i) * i)];
				this._interval = i, this._niceExtent = t
			}
		}, k_.prototype.calcNiceExtent = function(t) {
			w_.calcNiceExtent.call(this, t), this._fixMin = t.fixMin, this._fixMax = t.fixMax
		}, k_.prototype.parse = function(t) {
			return t
		}, k_.prototype.contain = function(t) {
			return Zv(t = C_(t) / C_(this.base), this._extent)
		}, k_.prototype.normalize = function(t) {
			return jv(t = C_(t) / C_(this.base), this._extent)
		}, k_.prototype.scale = function(t) {
			return t = Kv(t, this._extent), I_(this.base, t)
		}, k_.type = "log", k_);

	function k_() {
		var t = null !== x_ && x_.apply(this, arguments) || this;
		return t.type = "log", t.base = 10, t._originalScale = new n_, t._interval = 0, t
	}
	$y = D_.prototype;

	function A_(t, e) {
		return S_(t, oo(e))
	}
	$y.getMinorTicks = w_.getMinorTicks, $y.getLabel = w_.getLabel, zv.registerClass(D_);
	P_.prototype._prepareParams = function(t, e, n) {
		n[1] < n[0] && (n = [NaN, NaN]), this._dataMin = n[0], this._dataMax = n[1];
		var i = this._isOrdinal = "ordinal" === t.type,
			r = (this._needCrossZero = "interval" === t.type && e.getNeedCrossZero && e.getNeedCrossZero(), this
				._modelMinRaw = e.get("min", !0)),
			r = (D(r) ? this._modelMinNum = N_(t, r({
				min: n[0],
				max: n[1]
			})) : "dataMin" !== r && (this._modelMinNum = N_(t, r)), this._modelMaxRaw = e.get("max", !0));
		D(r) ? this._modelMaxNum = N_(t, r({
				min: n[0],
				max: n[1]
			})) : "dataMax" !== r && (this._modelMaxNum = N_(t, r)), i ? this._axisDataLen = e.getCategories()
			.length : "boolean" == typeof(t = F(n = e.get("boundaryGap")) ? n : [n || 0, n || 0])[0] ||
			"boolean" == typeof t[1] ? this._boundaryGapInner = [0, 0] : this._boundaryGapInner = [Ar(t[0], 1),
				Ar(t[1], 1)
			]
	}, P_.prototype.calculate = function() {
		var t = this._isOrdinal,
			e = this._dataMin,
			n = this._dataMax,
			i = this._axisDataLen,
			r = this._boundaryGapInner,
			o = t ? null : n - e || Math.abs(e),
			a = "dataMin" === this._modelMinRaw ? e : this._modelMinNum,
			s = "dataMax" === this._modelMaxRaw ? n : this._modelMaxNum,
			l = null != a,
			u = null != s,
			e = (null == a && (a = t ? i ? 0 : NaN : e - r[0] * o), null == s && (s = t ? i ? i - 1 : NaN : n +
				r[1] * o), null != a && isFinite(a) || (a = NaN), null != s && isFinite(s) || (s = NaN), xt(
				a) || xt(s) || t && !i),
			n = (this._needCrossZero && (a = 0 < a && 0 < s && !l ? 0 : a) < 0 && s < 0 && !u && (s = 0), this
				._determinedMin),
			r = this._determinedMax;
		return null != n && (a = n, l = !0), null != r && (s = r, u = !0), {
			min: a,
			max: s,
			minFixed: l,
			maxFixed: u,
			isBlank: e
		}
	}, P_.prototype.modifyDataMinMax = function(t, e) {
		this[R_[t]] = e
	}, P_.prototype.setDeterminedMinMax = function(t, e) {
		this[O_[t]] = e
	}, P_.prototype.freeze = function() {
		this.frozen = !0
	};
	var L_ = P_;

	function P_(t, e, n) {
		this._prepareParams(t, e, n)
	}
	var O_ = {
			min: "_determinedMin",
			max: "_determinedMax"
		},
		R_ = {
			min: "_dataMin",
			max: "_dataMax"
		};

	function N_(t, e) {
		return null == e ? null : xt(e) ? NaN : t.parse(e)
	}

	function E_(t, e) {
		var n, i, r, o, a, s = t.type,
			l = (l = e, u = (h = t).getExtent(), (c = h.rawExtentInfo) || (c = new L_(h, l, u), h.rawExtentInfo =
				c), c.calculate()),
			u = (t.setBlank(l.isBlank), l.min),
			h = l.max,
			c = e.ecModel;
		return c && "time" === s && (t = h_("bar", c), n = !1, E(t, function(t) {
			n = n || t.getBaseAxis() === e.axis
		}), n) && (s = c_(t), c = u, t = h, s = s, a = (a = (i = e).axis.getExtent())[1] - a[0], void 0 !== (s =
			function(t, e, n) {
				if (t && e) return null != (t = t[u_(e)]) && null != n ? t[l_(n)] : t
			}(s, i.axis)) && (r = 1 / 0, E(s, function(t) {
			r = Math.min(t.offset, r)
		}), o = -1 / 0, E(s, function(t) {
			o = Math.max(t.offset + t.width, o)
		}), r = Math.abs(r), o = Math.abs(o), t += o / (i = r + o) * (a = (s = t - c) / (1 - (r + o) /
			a) - s), c -= r / i * a), u = (s = {
			min: c,
			max: t
		}).min, h = s.max), {
			extent: [u, h],
			fixMin: l.minFixed,
			fixMax: l.maxFixed
		}
	}

	function z_(t, e) {
		var n = E_(t, e),
			i = n.extent,
			r = e.get("splitNumber"),
			o = (t instanceof D_ && (t.base = e.get("logBase")), t.type),
			a = e.get("interval"),
			o = "interval" === o || "time" === o;
		t.setExtent(i[0], i[1]), t.calcNiceExtent({
			splitNumber: r,
			fixMin: n.fixMin,
			fixMax: n.fixMax,
			minInterval: o ? e.get("minInterval") : null,
			maxInterval: o ? e.get("maxInterval") : null
		}), null != a && t.setInterval && t.setInterval(a)
	}

	function B_(t, e) {
		if (e = e || t.get("type")) switch (e) {
			case "category":
				return new Qv({
					ordinalMeta: t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(),
					extent: [1 / 0, -1 / 0]
				});
			case "time":
				return new y_({
					locale: t.ecModel.getLocaleModel(),
					useUTC: t.ecModel.get("useUTC")
				});
			default:
				return new(zv.getClass(e) || n_)
		}
	}

	function F_(n) {
		var i, e, r, t = n.getLabelModel().get("formatter"),
			o = "category" === n.type ? n.scale.getExtent()[0] : null;
		return "time" === n.scale.type ? (r = t, function(t, e) {
			return n.scale.getFormattedLabel(t, e, r)
		}) : V(t) ? (e = t, function(t) {
			t = n.scale.getLabel(t);
			return e.replace("{value}", null != t ? t : "")
		}) : D(t) ? (i = t, function(t, e) {
			return null != o && (e = t.value - o), i(V_(n, t), e, null != t.level ? {
				level: t.level
			} : null)
		}) : function(t) {
			return n.scale.getLabel(t)
		}
	}

	function V_(t, e) {
		return "category" === t.type ? t.scale.getLabel(e) : e.value
	}

	function G_(t) {
		var e = t.model,
			n = t.scale;
		if (e.get(["axisLabel", "show"]) && !n.isBlank()) {
			var i, r, o = n.getExtent(),
				a = n instanceof Qv ? n.count() : (i = n.getTicks()).length,
				s = t.getLabelModel(),
				l = F_(t),
				u = 1;
			40 < a && (u = Math.ceil(a / 40));
			for (var h, c, p, d = 0; d < a; d += u) {
				var f = l(i ? i[d] : {
						value: o[0] + d
					}, d),
					f = s.getTextRect(f),
					g = (f = f, h = s.get("rotate") || 0, c = p = g = c = void 0, h = h * Math.PI / 180, c = f
						.width, g = f.height, p = c * Math.abs(Math.cos(h)) + Math.abs(g * Math.sin(h)), c = c *
						Math.abs(Math.sin(h)) + Math.abs(g * Math.cos(h)), new X(f.x, f.y, p, c));
				r ? r.union(g) : r = g
			}
			return r
		}
	}

	function H_(t) {
		t = t.get("interval");
		return null == t ? "auto" : t
	}

	function W_(t) {
		return "category" === t.type && 0 === H_(t.getLabelModel())
	}
	X_.prototype.getNeedCrossZero = function() {
		return !this.option.scale
	}, X_.prototype.getCoordSysModel = function() {};
	var U_ = X_;

	function X_() {}
	var em = Object.freeze({
			__proto__: null,
			createDimensions: function(t, e) {
				return kv(t, e).dimensions
			},
			createList: function(t) {
				return Ev(null, t)
			},
			createScale: function(t, e) {
				var n = e;
				return (e = B_(n = e instanceof Vc ? n : new Vc(e))).setExtent(t[0], t[1]), z_(e, n), e
			},
			createSymbol: sm,
			createTextStyle: function(t, e) {
				return _c(t, null, null, "normal" !== (e = e || {}).state)
			},
			dataStack: {
				isDimensionStacked: Rv,
				enableDataStack: Ov,
				getStackedDimension: Nv
			},
			enableHoverEmphasis: Vl,
			getECData: k,
			getLayoutRect: Vp,
			mixinAxisModelCommonMethods: function(t) {
				st(t, U_)
			}
		}),
		Y_ = [],
		q_ = {
			registerPreprocessor: V0,
			registerProcessor: G0,
			registerPostInit: H0,
			registerPostUpdate: W0,
			registerUpdateLifecycle: U0,
			registerAction: X0,
			registerCoordinateSystem: Y0,
			registerLayout: q0,
			registerVisual: Z0,
			registerTransform: J0,
			registerLoading: $0,
			registerMap: Q0,
			registerImpl: function(t, e) {
				Gm[t] = e
			},
			PRIORITY: tm,
			ComponentModel: g,
			ComponentView: Qg,
			SeriesModel: Ug,
			ChartView: iy,
			registerComponentModel: function(t) {
				g.registerClass(t)
			},
			registerComponentView: function(t) {
				Qg.registerClass(t)
			},
			registerSeriesModel: function(t) {
				Ug.registerClass(t)
			},
			registerChartView: function(t) {
				iy.registerClass(t)
			},
			registerSubTypeDefaulter: function(t, e) {
				g.registerSubTypeDefaulter(t, e)
			},
			registerPainter: function(t, e) {
				Qr(t, e)
			}
		};

	function Z_(t) {
		F(t) ? E(t, function(t) {
			Z_(t)
		}) : 0 <= C(Y_, t) || (Y_.push(t), (t = D(t) ? {
			install: t
		} : t).install(q_))
	}
	var j_ = 1e-8;

	function K_(t, e) {
		return Math.abs(t - e) < j_
	}

	function $_(t, e, n) {
		var i = 0,
			r = t[0];
		if (r) {
			for (var o = 1; o < t.length; o++) {
				var a = t[o];
				i += as(r[0], r[1], a[0], a[1], e, n), r = a
			}
			var s = t[0];
			return K_(r[0], s[0]) && K_(r[1], s[1]) || (i += as(r[0], r[1], s[0], s[1], e, n)), 0 !== i
		}
	}
	var Q_ = [];

	function J_(t, e) {
		for (var n = 0; n < t.length; n++) ee(t[n], t[n], e)
	}

	function t1(t, e, n, i) {
		for (var r = 0; r < t.length; r++) {
			var o = t[r];
			(o = i ? i.project(o) : o) && isFinite(o[0]) && isFinite(o[1]) && (ne(e, e, o), ie(n, n, o))
		}
	}
	e1.prototype.setCenter = function(t) {
		this._center = t
	}, e1.prototype.getCenter = function() {
		return this._center || (this._center = this.calcCenter())
	};
	nm = e1;

	function e1(t) {
		this.name = t
	}
	var n1, i1, r1 = function(t, e) {
			this.type = "polygon", this.exterior = t, this.interiors = e
		},
		o1 = function(t) {
			this.type = "linestring", this.points = t
		},
		a1 = (u(s1, n1 = nm), s1.prototype.calcCenter = function() {
			for (var t, e = this.geometries, n = 0, i = 0; i < e.length; i++) {
				var r = e[i],
					o = r.exterior,
					o = o && o.length;
				n < o && (t = r, n = o)
			}
			if (t) {
				for (var a = t.exterior, s = 0, l = 0, u = 0, h = a.length, c = a[h - 1][0], p = a[h - 1][1],
						d = 0; d < h; d++) {
					var f = a[d][0],
						g = a[d][1],
						y = c * g - f * p;
					s += y, l += (c + f) * y, u += (p + g) * y, c = f, p = g
				}
				return s ? [l / s / 3, u / s / 3, s] : [a[0][0] || 0, a[0][1] || 0]
			}
			var m = this.getBoundingRect();
			return [m.x + m.width / 2, m.y + m.height / 2]
		}, s1.prototype.getBoundingRect = function(e) {
			var n, i, t = this._rect;
			return t && !e || (n = [1 / 0, 1 / 0], i = [-1 / 0, -1 / 0], E(this.geometries, function(t) {
				"polygon" === t.type ? t1(t.exterior, n, i, e) : E(t.points, function(t) {
					t1(t, n, i, e)
				})
			}), isFinite(n[0]) && isFinite(n[1]) && isFinite(i[0]) && isFinite(i[1]) || (n[0] = n[1] =
				i[0] = i[1] = 0), t = new X(n[0], n[1], i[0] - n[0], i[1] - n[1]), e) || (this._rect = t), t
		}, s1.prototype.contain = function(t) {
			var e = this.getBoundingRect(),
				n = this.geometries;
			if (e.contain(t[0], t[1])) t: for (var i = 0, r = n.length; i < r; i++) {
				var o = n[i];
				if ("polygon" === o.type) {
					var a = o.exterior,
						s = o.interiors;
					if ($_(a, t[0], t[1])) {
						for (var l = 0; l < (s ? s.length : 0); l++)
							if ($_(s[l], t[0], t[1])) continue t;
						return !0
					}
				}
			}
			return !1
		}, s1.prototype.transformTo = function(t, e, n, i) {
			for (var r = this.getBoundingRect(), o = r.width / r.height, o = (n ? i = i || n / o : n = o * i,
					new X(t, e, n, i)), a = r.calculateTransform(o), s = this.geometries, l = 0; l < s
				.length; l++) {
				var u = s[l];
				"polygon" === u.type ? (J_(u.exterior, a), E(u.interiors, function(t) {
					J_(t, a)
				})) : E(u.points, function(t) {
					J_(t, a)
				})
			}(r = this._rect).copy(o), this._center = [r.x + r.width / 2, r.y + r.height / 2]
		}, s1.prototype.cloneShallow = function(t) {
			t = new s1(t = null == t ? this.name : t, this.geometries, this._center);
			return t._rect = this._rect, t.transformTo = null, t
		}, s1);

	function s1(t, e, n) {
		t = n1.call(this, t) || this;
		return t.type = "geoJSON", t.geometries = e, t._center = n && [n[0], n[1]], t
	}

	function l1(t, e) {
		t = i1.call(this, t) || this;
		return t.type = "geoSVG", t._elOnlyForCalculate = e, t
	}

	function u1(t, e, n) {
		for (var i = 0; i < t.length; i++) t[i] = h1(t[i], e[i], n)
	}

	function h1(t, e, n) {
		for (var i = [], r = e[0], o = e[1], a = 0; a < t.length; a += 2) {
			var s = (s = t.charCodeAt(a) - 64) >> 1 ^ -(1 & s),
				l = (l = t.charCodeAt(a + 1) - 64) >> 1 ^ -(1 & l);
			i.push([(r = s += r) / n, (o = l += o) / n])
		}
		return i
	}

	function c1(t, o) {
		var e, n, r;
		return B(ht((t = (e = t).UTF8Encoding ? (null == (r = (n = e).UTF8Scale) && (r = 1024), E(n.features,
			function(t) {
				var e = t.geometry,
					n = e.encodeOffsets,
					i = e.coordinates;
				if (n) switch (e.type) {
					case "LineString":
						e.coordinates = h1(i, n, r);
						break;
					case "Polygon":
					case "MultiLineString":
						u1(i, n, r);
						break;
					case "MultiPolygon":
						E(i, function(t, e) {
							return u1(t, n[e], r)
						})
				}
			}), n.UTF8Encoding = !1, n) : e).features, function(t) {
			return t.geometry && t.properties && 0 < t.geometry.coordinates.length
		}), function(t) {
			var e = t.properties,
				n = t.geometry,
				i = [];
			switch (n.type) {
				case "Polygon":
					var r = n.coordinates;
					i.push(new r1(r[0], r.slice(1)));
					break;
				case "MultiPolygon":
					E(n.coordinates, function(t) {
						t[0] && i.push(new r1(t[0], t.slice(1)))
					});
					break;
				case "LineString":
					i.push(new o1([n.coordinates]));
					break;
				case "MultiLineString":
					i.push(new o1(n.coordinates))
			}
			t = new a1(e[o || "name"], i, e.cp);
			return t.properties = e, t
		})
	}
	u(l1, i1 = nm), l1.prototype.calcCenter = function() {
		for (var t = this._elOnlyForCalculate, e = t.getBoundingRect(), e = [e.x + e.width / 2, e.y + e.height /
				2
			], n = Oe(Q_), i = t; i && !i.isGeoSVGGraphicRoot;) Ne(n, i.getLocalTransform(), n), i = i.parent;
		return Fe(n, n), ee(e, e, n), e
	};
	var ea = Object.freeze({
			__proto__: null,
			MAX_SAFE_INTEGER: 9007199254740991,
			asc: ro,
			getPercentWithPrecision: function(t, e, n) {
				return t[e] && lo(t, n)[e] || 0
			},
			getPixelPrecision: so,
			getPrecision: oo,
			getPrecisionSafe: ao,
			isNumeric: vo,
			isRadianAroundZero: ho,
			linearMap: no,
			nice: yo,
			numericToNumber: mo,
			parseDate: po,
			quantile: function(t, e) {
				var e = (t.length - 1) * e + 1,
					n = Math.floor(e),
					i = +t[n - 1];
				return (e = e - n) ? i + e * (t[n] - i) : i
			},
			quantity: fo,
			quantityExponent: go,
			reformIntervals: function(t) {
				t.sort(function(t, e) {
					return function t(e, n, i) {
						return e.interval[i] < n.interval[i] || e.interval[i] === n.interval[
							i] && (e.close[i] - n.close[i] == (i ? -1 : 1) || !i && t(e, n, 1))
					}(t, e, 0) ? -1 : 1
				});
				for (var e = -1 / 0, n = 1, i = 0; i < t.length;) {
					for (var r = t[i].interval, o = t[i].close, a = 0; a < 2; a++) r[a] <= e && (r[a] = e,
						o[a] = a ? 1 : 1 - n), e = r[a], n = o[a];
					r[0] === r[1] && o[0] * o[1] != 1 ? t.splice(i, 1) : i++
				}
				return t
			},
			remRadian: uo,
			round: io
		}),
		ec = Object.freeze({
			__proto__: null,
			format: up,
			parse: po
		}),
		ip = Object.freeze({
			__proto__: null,
			Arc: ch,
			BezierCurve: sh,
			BoundingRect: X,
			Circle: yu,
			CompoundPath: fh,
			Ellipse: xu,
			Group: Ur,
			Image: Is,
			IncrementalDisplayable: e,
			Line: eh,
			LinearGradient: _h,
			Polygon: Yu,
			Polyline: Ku,
			RadialGradient: yh,
			Rect: Ns,
			Ring: Gu,
			Sector: zu,
			Text: Vs,
			clipPointsByRect: ac,
			clipRectByRect: sc,
			createIcon: lc,
			extendPath: Yh,
			extendShape: Uh,
			getShapeClass: Zh,
			getTransform: nc,
			initProps: Nh,
			makeImage: Kh,
			makePath: jh,
			mergePath: Qh,
			registerShape: qh,
			resizePath: Jh,
			updateProps: Rh
		}),
		Oc = Object.freeze({
			__proto__: null,
			addCommas: Tp,
			capitalFirst: function(t) {
				return t && t.charAt(0).toUpperCase() + t.substr(1)
			},
			encodeHTML: _e,
			formatTime: function(t, e, n) {
				"week" !== t && "month" !== t && "quarter" !== t && "half-year" !== t && "year" !== t || (
					t = "MM-dd\nyyyy");
				var i = (e = po(e))[(n = n ? "getUTC" : "get") + "FullYear"](),
					r = e[n + "Month"]() + 1,
					o = e[n + "Date"](),
					a = e[n + "Hours"](),
					s = e[n + "Minutes"](),
					l = e[n + "Seconds"](),
					e = e[n + "Milliseconds"]();
				return t = t.replace("MM", sp(r, 2)).replace("M", r).replace("yyyy", i).replace("yy", sp(i %
						100 + "", 2)).replace("dd", sp(o, 2)).replace("d", o).replace("hh", sp(a, 2))
					.replace("h", a).replace("mm", sp(s, 2)).replace("m", s).replace("ss", sp(l, 2))
					.replace("s", l).replace("SSS", sp(e, 3))
			},
			formatTpl: Lp,
			getTextRect: function(t, e, n, i, r, o, a, s) {
				return new Vs({
					style: {
						text: t,
						font: e,
						align: n,
						verticalAlign: i,
						padding: r,
						rich: o,
						overflow: a ? "truncate" : null,
						lineHeight: s
					}
				}).getBoundingRect()
			},
			getTooltipMarker: Pp,
			normalizeCssArray: Cp,
			toCamelCase: Ip,
			truncateText: la
		}),
		Uy = Object.freeze({
			__proto__: null,
			bind: pt,
			clone: y,
			curry: S,
			defaults: z,
			each: E,
			extend: P,
			filter: ht,
			indexOf: C,
			inherits: at,
			isArray: F,
			isFunction: D,
			isObject: O,
			isString: V,
			map: B,
			merge: d,
			reduce: ut
		}),
		p1 = No();

	function d1(t) {
		return "category" === t.type ? (r = (e = t).getLabelModel(), o = g1(e, r), !r.get("show") || e.scale
			.isBlank() ? {
				labels: [],
				labelCategoryInterval: o.labelCategoryInterval
			} : o) : (r = (n = t).scale.getTicks(), i = F_(n), {
			labels: B(r, function(t, e) {
				return {
					level: t.level,
					formattedLabel: i(t, e),
					rawLabel: n.scale.getLabel(t),
					tickValue: t.value
				}
			})
		});
		var n, i, e, r, o
	}

	function f1(t, e) {
		var n, i, r, o, a, s;
		return "category" === t.type ? (e = e, o = y1(n = t, "ticks"), a = H_(e), (s = m1(o, a)) || (e.get(
			"show") && !n.scale.isBlank() || (i = []), i = D(a) ? x1(n, a, !0) : "auto" === a ? (s = g1(n, n
				.getLabelModel()), r = s.labelCategoryInterval, B(s.labels, function(t) {
				return t.tickValue
			})) : _1(n, r = a, !0), v1(o, a, {
				ticks: i,
				tickCategoryInterval: r
			}))) : {
			ticks: B(t.scale.getTicks(), function(t) {
				return t.value
			})
		}
	}

	function g1(t, e) {
		var n, i = y1(t, "labels"),
			e = H_(e),
			r = m1(i, e);
		return r || v1(i, e, {
			labels: D(e) ? x1(t, e) : _1(t, n = "auto" === e ? null != (i = p1(r = t).autoInterval) ? i :
				p1(r).autoInterval = r.calculateCategoryInterval() : e),
			labelCategoryInterval: n
		})
	}

	function y1(t, e) {
		return p1(t)[e] || (p1(t)[e] = [])
	}

	function m1(t, e) {
		for (var n = 0; n < t.length; n++)
			if (t[n].key === e) return t[n].value
	}

	function v1(t, e, n) {
		return t.push({
			key: e,
			value: n
		}), n
	}

	function _1(t, e, n) {
		for (var i = F_(t), r = t.scale, o = r.getExtent(), a = t.getLabelModel(), s = [], l = Math.max((e || 0) +
				1, 1), e = o[0], u = r.count(), u = (0 !== e && 1 < l && 2 < u / l && (e = Math.round(Math.ceil(
				e / l) * l)), W_(t)), t = a.get("showMinLabel") || u, a = a.get("showMaxLabel") || u, h = (t &&
				e !== o[0] && c(o[0]), e); h <= o[1]; h += l) c(h);

		function c(t) {
			var e = {
				value: t
			};
			s.push(n ? t : {
				formattedLabel: i(e),
				rawLabel: r.getLabel(e),
				tickValue: t
			})
		}
		return a && h - l !== o[1] && c(o[1]), s
	}

	function x1(t, i, r) {
		var o = t.scale,
			a = F_(t),
			s = [];
		return E(o.getTicks(), function(t) {
			var e = o.getLabel(t),
				n = t.value;
			i(t.value, e) && s.push(r ? n : {
				formattedLabel: a(t),
				rawLabel: e,
				tickValue: n
			})
		}), s
	}
	var b1 = [0, 1],
		Nc = (w1.prototype.contain = function(t) {
			var e = this._extent,
				n = Math.min(e[0], e[1]),
				e = Math.max(e[0], e[1]);
			return n <= t && t <= e
		}, w1.prototype.containData = function(t) {
			return this.scale.contain(t)
		}, w1.prototype.getExtent = function() {
			return this._extent.slice()
		}, w1.prototype.getPixelPrecision = function(t) {
			return so(t || this.scale.getExtent(), this._extent)
		}, w1.prototype.setExtent = function(t, e) {
			var n = this._extent;
			n[0] = t, n[1] = e
		}, w1.prototype.dataToCoord = function(t, e) {
			var n = this._extent,
				i = this.scale;
			return t = i.normalize(t), this.onBand && "ordinal" === i.type && S1(n = n.slice(), i.count()), no(
				t, b1, n, e)
		}, w1.prototype.coordToData = function(t, e) {
			var n = this._extent,
				i = this.scale,
				i = (this.onBand && "ordinal" === i.type && S1(n = n.slice(), i.count()), no(t, n, b1, e));
			return this.scale.scale(i)
		}, w1.prototype.pointToData = function(t, e) {}, w1.prototype.getTicksCoords = function(t) {
			var e, n, i, r, o, a, s, l = (t = t || {}).tickModel || this.getTickModel(),
				u = B(f1(this, l).ticks, function(t) {
					return {
						coord: this.dataToCoord("ordinal" === this.scale.type ? this.scale
							.getRawOrdinalNumber(t) : t),
						tickValue: t
					}
				}, this),
				l = l.get("alignWithLabel");

			function h(t, e) {
				return t = io(t), e = io(e), a ? e < t : t < e
			}
			return e = this, n = u, l = l, t = t.clamp, s = n.length, e.onBand && !l && s && (l = e.getExtent(),
				1 === s ? (n[0].coord = l[0], i = n[1] = {
					coord: l[1]
				}) : (o = n[s - 1].tickValue - n[0].tickValue, r = (n[s - 1].coord - n[0].coord) / o, E(n,
					function(t) {
						t.coord -= r / 2
					}), e = 1 + (o = e.scale.getExtent())[1] - n[s - 1].tickValue, i = {
					coord: n[s - 1].coord + r * e
				}, n.push(i)), a = l[0] > l[1], h(n[0].coord, l[0]) && (t ? n[0].coord = l[0] : n.shift()),
				t && h(l[0], n[0].coord) && n.unshift({
					coord: l[0]
				}), h(l[1], i.coord) && (t ? i.coord = l[1] : n.pop()), t) && h(i.coord, l[1]) && n.push({
				coord: l[1]
			}), u
		}, w1.prototype.getMinorTicksCoords = function() {
			var t;
			return "ordinal" === this.scale.type ? [] : (t = this.model.getModel("minorTick").get(
				"splitNumber"), B(this.scale.getMinorTicks(t = 0 < t && t < 100 ? t : 5), function(t) {
					return B(t, function(t) {
						return {
							coord: this.dataToCoord(t),
							tickValue: t
						}
					}, this)
				}, this))
		}, w1.prototype.getViewLabels = function() {
			return d1(this).labels
		}, w1.prototype.getLabelModel = function() {
			return this.model.getModel("axisLabel")
		}, w1.prototype.getTickModel = function() {
			return this.model.getModel("axisTick")
		}, w1.prototype.getBandWidth = function() {
			var t = this._extent,
				e = this.scale.getExtent(),
				e = e[1] - e[0] + (this.onBand ? 1 : 0),
				t = (0 === e && (e = 1), Math.abs(t[1] - t[0]));
			return Math.abs(t) / e
		}, w1.prototype.calculateCategoryInterval = function() {
			r = (n = d = this).getLabelModel();
			var t = {
					axisRotate: n.getRotate ? n.getRotate() : n.isHorizontal && !n.isHorizontal() ? 90 : 0,
					labelRotate: r.get("rotate") || 0,
					font: r.getFont()
				},
				e = F_(d),
				n = (t.axisRotate - t.labelRotate) / 180 * Math.PI,
				i = (r = d.scale).getExtent(),
				r = r.count();
			if (i[1] - i[0] < 1) return 0;
			for (var o = 1, a = (40 < r && (o = Math.max(1, Math.floor(r / 40))), i[0]), s = d.dataToCoord(a +
						1) - d.dataToCoord(a), l = Math.abs(s * Math.cos(n)), s = Math.abs(s * Math.sin(n)), u =
					0, h = 0; a <= i[1]; a += o) var c = 1.3 * (p = Ir(e({
					value: a
				}), t.font, "center", "top")).width,
				p = 1.3 * p.height,
				u = Math.max(u, c, 7),
				h = Math.max(h, p, 7);
			var n = u / l,
				l = h / s,
				s = (isNaN(n) && (n = 1 / 0), isNaN(l) && (l = 1 / 0), Math.max(0, Math.floor(Math.min(n, l)))),
				n = p1(d.model),
				l = d.getExtent(),
				d = n.lastAutoInterval,
				f = n.lastTickCount;
			return null != d && null != f && Math.abs(d - s) <= 1 && Math.abs(f - r) <= 1 && s < d && n
				.axisExtent0 === l[0] && n.axisExtent1 === l[1] ? s = d : (n.lastTickCount = r, n
					.lastAutoInterval = s, n.axisExtent0 = l[0], n.axisExtent1 = l[1]), s
		}, w1);

	function w1(t, e, n) {
		this.onBand = !1, this.inverse = !1, this.dim = t, this.scale = e, this._extent = n || [0, 0]
	}

	function S1(t, e) {
		e = (t[1] - t[0]) / e / 2;
		t[0] += e, t[1] -= e
	}
	var M1 = 2 * Math.PI,
		T1 = es.CMD,
		I1 = ["top", "right", "bottom", "left"];

	function C1(t, e, n, i, r, o, a, s) {
		var l = r - t,
			u = o - e,
			n = n - t,
			i = i - e,
			h = Math.sqrt(n * n + i * i),
			l = (l * (n /= h) + u * (i /= h)) / h,
			u = (s && (l = Math.min(Math.max(l, 0), 1)), a[0] = t + (l *= h) * n),
			s = a[1] = e + l * i;
		return Math.sqrt((u - r) * (u - r) + (s - o) * (s - o))
	}

	function D1(t, e, n, i, r, o, a) {
		n < 0 && (t += n, n = -n), i < 0 && (e += i, i = -i);
		n = t + n, i = e + i, t = a[0] = Math.min(Math.max(r, t), n), n = a[1] = Math.min(Math.max(o, e), i);
		return Math.sqrt((t - r) * (t - r) + (n - o) * (n - o))
	}
	var k1 = [];

	function A1(t, e, n) {
		for (var i, r, o, a, s, l, u, h, c, p = 0, d = 0, f = 0, g = 0, y = 1 / 0, m = e.data, v = t.x, _ = t.y, x =
				0; x < m.length;) {
			var b = m[x++],
				w = (1 === x && (f = p = m[x], g = d = m[x + 1]), y);
			switch (b) {
				case T1.M:
					p = f = m[x++], d = g = m[x++];
					break;
				case T1.L:
					w = C1(p, d, m[x], m[x + 1], v, _, k1, !0), p = m[x++], d = m[x++];
					break;
				case T1.C:
					w = Wn(p, d, m[x++], m[x++], m[x++], m[x++], m[x], m[x + 1], v, _, k1), p = m[x++], d = m[x++];
					break;
				case T1.Q:
					w = Zn(p, d, m[x++], m[x++], m[x], m[x + 1], v, _, k1), p = m[x++], d = m[x++];
					break;
				case T1.A:
					var S = m[x++],
						M = m[x++],
						T = m[x++],
						I = m[x++],
						C = m[x++],
						D = m[x++],
						k = (x += 1, !!(1 - m[x++])),
						A = Math.cos(C) * T + S,
						L = Math.sin(C) * I + M;
					x <= 1 && (f = A, g = L), L = (A = C) + D, k = k, a = (v - S) * (o = I) / T + S, s = _, l = k1,
						c = h = u = void 0, a -= i = S, s -= r = M, u = Math.sqrt(a * a + s * s), h = (a /= u) * o +
						i, c = (s /= u) * o + r, w = Math.abs(A - L) % M1 < 1e-4 || ((L = k ? (k = A, A = rs(L), rs(
								k)) : (A = rs(A), rs(L))) < A && (L += M1), (k = Math.atan2(s, a)) < 0 && (k += M1),
							A <= k && k <= L) || A <= k + M1 && k + M1 <= L ? (l[0] = h, l[1] = c, u - o) : (c = ((
							k = o * Math.cos(A) + i) - a) * (k - a) + ((h = o * Math.sin(A) + r) - s) * (h - s)) < (
							i = ((u = o * Math.cos(L) + i) - a) * (u - a) + ((A = o * Math.sin(L) + r) - s) * (A -
								s)) ? (l[0] = k, l[1] = h, Math.sqrt(c)) : (l[0] = u, l[1] = A, Math.sqrt(i)), p =
						Math.cos(C + D) * T + S, d = Math.sin(C + D) * I + M;
					break;
				case T1.R:
					w = D1(f = p = m[x++], g = d = m[x++], m[x++], m[x++], v, _, k1);
					break;
				case T1.Z:
					w = C1(p, d, f, g, v, _, k1, !0), p = f, d = g
			}
			w < y && (y = w, n.set(k1[0], k1[1]))
		}
		return y
	}
	var L1 = new H,
		P1 = new H,
		O1 = new H,
		R1 = new H,
		N1 = new H;

	function E1(t, e) {
		if (t) {
			var n = t.getTextGuideLine(),
				i = t.getTextContent();
			if (i && n) {
				var r = t.textGuideLineConfig || {},
					o = [
						[0, 0],
						[0, 0],
						[0, 0]
					],
					a = r.candidates || I1,
					s = i.getBoundingRect().clone(),
					l = (s.applyTransform(i.getComputedTransform()), 1 / 0),
					u = r.anchor,
					h = t.getComputedTransform(),
					c = h && Fe([], h),
					p = e.get("length2") || 0;
				u && O1.copy(u);
				for (var d, f = 0; f < a.length; f++) {
					var g = a[f],
						y = (w = b = x = _ = v = m = y = void 0, g),
						m = 0,
						v = s,
						_ = L1,
						x = R1,
						b = v.width,
						w = v.height;
					switch (y) {
						case "top":
							_.set(v.x + b / 2, v.y - m), x.set(0, -1);
							break;
						case "bottom":
							_.set(v.x + b / 2, v.y + w + m), x.set(0, 1);
							break;
						case "left":
							_.set(v.x - m, v.y + w / 2), x.set(-1, 0);
							break;
						case "right":
							_.set(v.x + b + m, v.y + w / 2), x.set(1, 0)
					}
					H.scaleAndAdd(P1, L1, R1, p), P1.transform(c);
					g = t.getBoundingRect(), g = u ? u.distance(P1) : t instanceof j ? A1(P1, t.path, O1) : (y = O1,
						d = D1((d = g).x, g.y, g.width, g.height, P1.x, P1.y, k1), y.set(k1[0], k1[1]), d);
					g < l && (l = g, P1.transform(h), O1.transform(h), O1.toArray(o[0]), P1.toArray(o[1]), L1
						.toArray(o[2]))
				}
				F1(o, e.get("minTurnAngle")), n.setShape({
					points: o
				})
			}
		}
	}
	var z1 = [],
		B1 = new H;

	function F1(t, e) {
		var n, i;
		e <= 180 && 0 < e && (e = e / 180 * Math.PI, L1.fromArray(t[0]), P1.fromArray(t[1]), O1.fromArray(t[2]), H
			.sub(R1, L1, P1), H.sub(N1, O1, P1), i = R1.len(), n = N1.len(), i < .001 || n < .001 || (R1.scale(
				1 / i), N1.scale(1 / n), i = R1.dot(N1), Math.cos(e) < i && (n = C1(P1.x, P1.y, O1.x, O1.y,
					L1.x, L1.y, z1, !1), B1.fromArray(z1), B1.scaleAndAdd(N1, n / Math.tan(Math.PI - e)),
				i = O1.x !== P1.x ? (B1.x - P1.x) / (O1.x - P1.x) : (B1.y - P1.y) / (O1.y - P1.y), isNaN(
				i) || (i < 0 ? H.copy(B1, P1) : 1 < i && H.copy(B1, O1), B1.toArray(t[1])))))
	}

	function V1(t, e, n, i) {
		var r = "normal" === n,
			n = r ? t : t.ensureState(n),
			e = (n.ignore = e, i.get("smooth")),
			e = (e && !0 === e && (e = .3), n.shape = n.shape || {}, 0 < e && (n.shape.smooth = e), i.getModel(
				"lineStyle").getLineStyle());
		r ? t.useStyle(e) : n.style = e
	}

	function G1(t, e) {
		var n = e.smooth,
			i = e.points;
		if (i)
			if (t.moveTo(i[0][0], i[0][1]), 0 < n && 3 <= i.length) {
				var e = $t(i[0], i[1]),
					r = $t(i[1], i[2]);
				e && r ? (n = Math.min(e, r) * n, e = te([], i[1], i[0], n / e), n = te([], i[1], i[2], n / r), r =
					te([], e, n, .5), t.bezierCurveTo(e[0], e[1], e[0], e[1], r[0], r[1]), t.bezierCurveTo(n[0],
						n[1], n[0], n[1], i[2][0], i[2][1])) : (t.lineTo(i[1][0], i[1][1]), t.lineTo(i[2][0], i[
					2][1]))
			} else
				for (var o = 1; o < i.length; o++) t.lineTo(i[o][0], i[o][1])
	}

	function H1(t, e, n) {
		var i = t.getTextGuideLine(),
			r = t.getTextContent();
		if (r) {
			for (var o = e.normal, a = o.get("show"), s = r.ignore, l = 0; l < al.length; l++) {
				var u, h = al[l],
					c = e[h],
					p = "normal" === h;
				c && (u = c.get("show"), (p ? s : R(r.states[h] && r.states[h].ignore, s)) || !R(u, a) ? ((u = p ?
					i : i && i.states[h]) && (u.ignore = !0), i && V1(i, !0, h, c)) : (i || (i = new Ku, t
					.setTextGuideLine(i), p || !s && a || V1(i, !0, "normal", e.normal), t.stateProxy &&
					(i.stateProxy = t.stateProxy)), V1(i, !1, h, c)))
			}
			i && (z(i.style, n), i.style.fill = null, n = o.get("showAbove"), (t.textGuideLineConfig = t
				.textGuideLineConfig || {}).showAbove = n || !1, i.buildPath = G1)
		} else i && t.removeTextGuideLine()
	}

	function W1(t, e) {
		for (var n = {
				normal: t.getModel(e = e || "labelLine")
			}, i = 0; i < ol.length; i++) {
			var r = ol[i];
			n[r] = t.getModel([r, e])
		}
		return n
	}

	function U1(t) {
		for (var e = [], n = 0; n < t.length; n++) {
			var i, r, o, a, s, l, u = t[n];
			u.defaultAttr.ignore || (r = (i = u.label).getComputedTransform(), o = i.getBoundingRect(), a = !r || r[
					1] < 1e-5 && r[2] < 1e-5, l = i.style.margin || 0, (s = o.clone()).applyTransform(r), s.x -=
				l / 2, s.y -= l / 2, s.width += l, s.height += l, l = a ? new Ch(o, r) : null, e.push({
					label: i,
					labelLine: u.labelLine,
					rect: s,
					localRect: o,
					obb: l,
					priority: u.priority,
					defaultAttr: u.defaultAttr,
					layoutOption: u.computedLayoutOption,
					axisAligned: a,
					transform: r
				}))
		}
		return e
	}

	function X1(s, l, u, t, e, n) {
		var h = s.length;
		if (!(h < 2)) {
			s.sort(function(t, e) {
				return t.rect[l] - e.rect[l]
			});
			for (var i = 0, o = !1, r = 0, a = 0; a < h; a++) {
				var c, p = s[a],
					d = p.rect;
				(c = d[l] - i) < 0 && (d[l] -= c, p.label[l] -= c, o = !0), r += Math.max(-c, 0), i = d[l] + d[u]
			}
			0 < r && n && x(-r / h, 0, h);
			var f, g, y = s[0],
				m = s[h - 1];
			return v(), f < 0 && b(-f, .8), g < 0 && b(g, .8), v(), _(f, g, 1), _(g, f, -1), v(), f < 0 && w(-f),
				g < 0 && w(g), o
		}

		function v() {
			f = y.rect[l] - t, g = e - m.rect[l] - m.rect[u]
		}

		function _(t, e, n) {
			t < 0 && (0 < (e = Math.min(e, -t)) ? (x(e * n, 0, h), (e = e + t) < 0 && b(-e * n, 1)) : b(-t * n, 1))
		}

		function x(t, e, n) {
			0 !== t && (o = !0);
			for (var i = e; i < n; i++) {
				var r = s[i];
				r.rect[l] += t, r.label[l] += t
			}
		}

		function b(t, e) {
			for (var n = [], i = 0, r = 1; r < h; r++) {
				var o = s[r - 1].rect,
					o = Math.max(s[r].rect[l] - o[l] - o[u], 0);
				n.push(o), i += o
			}
			if (i) {
				var a = Math.min(Math.abs(t) / i, e);
				if (0 < t)
					for (r = 0; r < h - 1; r++) x(n[r] * a, 0, r + 1);
				else
					for (r = h - 1; 0 < r; r--) x(-(n[r - 1] * a), r, h)
			}
		}

		function w(t) {
			for (var e = t < 0 ? -1 : 1, n = (t = Math.abs(t), Math.ceil(t / (h - 1))), i = 0; i < h - 1; i++)
				if (0 < e ? x(n, 0, i + 1) : x(-n, h - i - 1, h), (t -= n) <= 0) return
		}
	}

	function Y1(t, e, n, i) {
		return X1(t, "y", "height", e, n, i)
	}

	function q1(t) {
		var e = [],
			n = (t.sort(function(t, e) {
				return e.priority - t.priority
			}), new X(0, 0, 0, 0));

		function i(t) {
			var e;
			t.ignore || null == (e = t.ensureState("emphasis")).ignore && (e.ignore = !1), t.ignore = !0
		}
		for (var r = 0; r < t.length; r++) {
			for (var o = t[r], a = o.axisAligned, s = o.localRect, l = o.transform, u = o.label, h = o.labelLine,
					c = (n.copy(o.rect), n.width -= .1, n.height -= .1, n.x += .05, n.y += .05, o.obb), p = !1, d =
					0; d < e.length; d++) {
				var f = e[d];
				if (n.intersect(f.rect)) {
					if (a && f.axisAligned) {
						p = !0;
						break
					}
					if (f.obb || (f.obb = new Ch(f.localRect, f.transform)), (c = c || new Ch(s, l)).intersect(f
							.obb)) {
						p = !0;
						break
					}
				}
			}
			p ? (i(u), h && i(h)) : (u.attr("ignore", o.defaultAttr.ignore), h && h.attr("ignore", o.defaultAttr
				.labelGuideIgnore), e.push(o))
		}
	}

	function Z1(t, e) {
		var n = t.label,
			e = e && e.getTextGuideLine();
		return {
			dataIndex: t.dataIndex,
			dataType: t.dataType,
			seriesIndex: t.seriesModel.seriesIndex,
			text: t.label.style.text,
			rect: t.hostRect,
			labelRect: t.rect,
			align: n.style.align,
			verticalAlign: n.style.verticalAlign,
			labelLinePoints: function(t) {
				if (t) {
					for (var e = [], n = 0; n < t.length; n++) e.push(t[n].slice());
					return e
				}
			}(e && e.shape.points)
		}
	}
	var j1 = ["align", "verticalAlign", "width", "height", "fontSize"],
		K1 = new xr,
		$1 = No(),
		Q1 = No();

	function J1(t, e, n) {
		for (var i = 0; i < n.length; i++) {
			var r = n[i];
			null != e[r] && (t[r] = e[r])
		}
	}
	var tx = ["x", "y", "rotation"],
		ex = (nx.prototype.clearLabels = function() {
			this._labelList = [], this._chartViewList = []
		}, nx.prototype._addLabel = function(t, e, n, i, r) {
			var o, a = i.style,
				s = i.__hostTarget.textConfig || {},
				l = i.getComputedTransform(),
				u = i.getBoundingRect().plain(),
				l = (X.applyTransform(u, u, l), l ? K1.setLocalTransform(l) : (K1.x = K1.y = K1.rotation = K1
						.originX = K1.originY = 0, K1.scaleX = K1.scaleY = 1), K1.rotation = rs(K1.rotation), i
					.__hostTarget),
				h = (l && (o = l.getBoundingRect().plain(), h = l.getComputedTransform(), X.applyTransform(o, o,
					h)), o && l.getTextGuideLine());
			this._labelList.push({
				label: i,
				labelLine: h,
				seriesModel: n,
				dataIndex: t,
				dataType: e,
				layoutOption: r,
				computedLayoutOption: null,
				rect: u,
				hostRect: o,
				priority: o ? o.width * o.height : 0,
				defaultAttr: {
					ignore: i.ignore,
					labelGuideIgnore: h && h.ignore,
					x: K1.x,
					y: K1.y,
					scaleX: K1.scaleX,
					scaleY: K1.scaleY,
					rotation: K1.rotation,
					style: {
						x: a.x,
						y: a.y,
						align: a.align,
						verticalAlign: a.verticalAlign,
						width: a.width,
						height: a.height,
						fontSize: a.fontSize
					},
					cursor: i.cursor,
					attachedPos: s.position,
					attachedRot: s.rotation
				}
			})
		}, nx.prototype.addLabelsOfSeries = function(t) {
			var n = this,
				i = (this._chartViewList.push(t), t.__model),
				r = i.get("labelLayout");
			(D(r) || ct(r).length) && t.group.traverse(function(t) {
				if (t.ignore) return !0;
				var e = t.getTextContent(),
					t = k(t);
				e && !e.disableLabelLayout && n._addLabel(t.dataIndex, t.dataType, i, e, r)
			})
		}, nx.prototype.updateLayoutConfig = function(t) {
			var e = t.getWidth(),
				n = t.getHeight();
			for (var i = 0; i < this._labelList.length; i++) {
				var r = this._labelList[i],
					o = r.label,
					a = o.__hostTarget,
					s = r.defaultAttr,
					l = void 0,
					l = D(r.layoutOption) ? r.layoutOption(Z1(r, a)) : r.layoutOption,
					u = (r.computedLayoutOption = l = l || {}, Math.PI / 180),
					h = (a && a.setTextConfig({
						local: !1,
						position: null != l.x || null != l.y ? null : s.attachedPos,
						rotation: null != l.rotate ? l.rotate * u : s.attachedRot,
						offset: [l.dx || 0, l.dy || 0]
					}), !1);
				null != l.x ? (o.x = W(l.x, e), o.setStyle("x", 0), h = !0) : (o.x = s.x, o.setStyle("x", s
						.style.x)), null != l.y ? (o.y = W(l.y, n), o.setStyle("y", 0), h = !0) : (o.y = s.y, o
						.setStyle("y", s.style.y)), l.labelLinePoints && (c = a.getTextGuideLine()) && (c
						.setShape({
							points: l.labelLinePoints
						}), h = !1), $1(o).needsUpdateLabelLine = h, o.rotation = null != l.rotate ? l.rotate *
					u : s.rotation, o.scaleX = s.scaleX, o.scaleY = s.scaleY;
				for (var c, p = 0; p < j1.length; p++) {
					var d = j1[p];
					o.setStyle(d, (null != l[d] ? l : s.style)[d])
				}
				l.draggable ? (o.draggable = !0, o.cursor = "move", a && (c = r.seriesModel, null != r
					.dataIndex && (c = r.seriesModel.getData(r.dataType).getItemModel(r.dataIndex)), o
					.on("drag", function(t, e) {
						return function() {
							E1(t, e)
						}
					}(a, c.getModel("labelLine"))))) : (o.off("drag"), o.cursor = s.cursor)
			}
		}, nx.prototype.layout = function(t) {
			var e, n = t.getWidth(),
				t = t.getHeight(),
				i = U1(this._labelList),
				r = ht(i, function(t) {
					return "shiftX" === t.layoutOption.moveOverlap
				}),
				o = ht(i, function(t) {
					return "shiftY" === t.layoutOption.moveOverlap
				});
			X1(r, "x", "width", 0, n, e), Y1(o, 0, t), q1(ht(i, function(t) {
				return t.layoutOption.hideOverlap
			}))
		}, nx.prototype.processLabelsOverall = function() {
			var a = this;
			E(this._chartViewList, function(t) {
				var i = t.__model,
					r = t.ignoreLabelLineUpdate,
					o = i.isAnimationEnabled();
				t.group.traverse(function(t) {
					if (t.ignore && !t.forceLabelAnimation) return !0;
					var e = !r,
						n = t.getTextContent();
					(e = !e && n ? $1(n).needsUpdateLabelLine : e) && a._updateLabelLine(t, i),
						o && a._animateLabels(t, i)
				})
			})
		}, nx.prototype._updateLabelLine = function(t, e) {
			var n = t.getTextContent(),
				i = k(t),
				r = i.dataIndex;
			n && null != r && (e = (n = e.getData(i.dataType)).getItemModel(r), i = {}, (r = n.getItemVisual(r,
					"style")) && (n = n.getVisual("drawType"), i.stroke = r[n]), r = e.getModel(
				"labelLine"), H1(t, W1(e), i), E1(t, r))
		}, nx.prototype._animateLabels = function(t, e) {
			var n, i, r, o, a, s = t.getTextContent(),
				l = t.getTextGuideLine();
			!s || !t.forceLabelAnimation && (s.ignore || s.invisible || t.disableLabelAnimation || Eh(t)) || (
					o = (r = $1(s)).oldLayout, n = (i = k(t)).dataIndex, a = {
						x: s.x,
						y: s.y,
						rotation: s.rotation
					}, i = e.getData(i.dataType), o ? (s.attr(o), (t = t.prevStates) && (0 <= C(t, "select") &&
							s.attr(r.oldLayoutSelect), 0 <= C(t, "emphasis")) && s.attr(r.oldLayoutEmphasis),
						Rh(s, a, e, n)) : (s.attr(a), Tc(s).valueAnimation || (t = R(s.style.opacity, 1), s
						.style.opacity = 0, Nh(s, {
							style: {
								opacity: t
							}
						}, e, n))), r.oldLayout = a, s.states.select && (J1(t = r.oldLayoutSelect = {}, a, tx),
						J1(t, s.states.select, tx)), s.states.emphasis && (J1(t = r.oldLayoutEmphasis = {}, a,
						tx), J1(t, s.states.emphasis, tx)), Ic(s, n, i, e, e)), !l || l.ignore || l.invisible ||
				(o = (r = Q1(l)).oldLayout, a = {
					points: l.shape.points
				}, o ? (l.attr({
					shape: o
				}), Rh(l, {
					shape: a
				}, e)) : (l.setShape(a), l.style.strokePercent = 0, Nh(l, {
					style: {
						strokePercent: 1
					}
				}, e)), r.oldLayout = a)
		}, nx);

	function nx() {
		this._labelList = [], this._chartViewList = []
	}
	var ix = No();

	function rx(t) {
		t.registerUpdateLifecycle("series:beforeupdate", function(t, e, n) {
			(ix(e).labelManager || (ix(e).labelManager = new ex)).clearLabels()
		}), t.registerUpdateLifecycle("series:layoutlabels", function(t, e, n) {
			var i = ix(e).labelManager;
			n.updatedSeries.forEach(function(t) {
				i.addLabelsOfSeries(e.getViewOfSeriesModel(t))
			}), i.updateLayoutConfig(e), i.layout(e), i.processLabelsOverall()
		})
	}

	function ox(t, e, n) {
		var i = U.createCanvas(),
			r = e.getWidth(),
			e = e.getHeight(),
			o = i.style;
		return o && (o.position = "absolute", o.left = "0", o.top = "0", o.width = r + "px", o.height = e + "px", i
			.setAttribute("data-zr-dom-id", t)), i.width = r * n, i.height = e * n, i
	}
	Z_(rx);
	u(lx, ax = le), lx.prototype.getElementCount = function() {
		return this.__endIndex - this.__startIndex
	}, lx.prototype.afterBrush = function() {
		this.__prevStartIndex = this.__startIndex, this.__prevEndIndex = this.__endIndex
	}, lx.prototype.initContext = function() {
		this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr
	}, lx.prototype.setUnpainted = function() {
		this.__firstTimePaint = !0
	}, lx.prototype.createBackBuffer = function() {
		var t = this.dpr;
		this.domBack = ox("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext("2d"),
			1 !== t && this.ctxBack.scale(t, t)
	}, lx.prototype.createRepaintRects = function(t, e, n, i) {
		if (this.__firstTimePaint) return this.__firstTimePaint = !1, null;
		var l = [],
			u = this.maxRepaintRectCount,
			h = !1,
			c = new X(0, 0, 0, 0);

		function r(t) {
			if (t.isFinite() && !t.isZero())
				if (0 === l.length)(e = new X(0, 0, 0, 0)).copy(t), l.push(e);
				else {
					for (var e, n = !1, i = 1 / 0, r = 0, o = 0; o < l.length; ++o) {
						var a = l[o];
						if (a.intersect(t)) {
							var s = new X(0, 0, 0, 0);
							s.copy(a), s.union(t), l[o] = s, n = !0;
							break
						}
						h && (c.copy(t), c.union(a), s = t.width * t.height, a = a.width * a.height, (a = c
							.width * c.height - s - a) < i) && (i = a, r = o)
					}
					h && (l[r].union(t), n = !0), n || ((e = new X(0, 0, 0, 0)).copy(t), l.push(e)), h = h || l
						.length >= u
				}
		}
		for (var o, a = this.__startIndex; a < this.__endIndex; ++a)(s = t[a]) && (d = s.shouldBePainted(n, i, !
				0, !0), (p = s.__isRendered && (s.__dirty & _n || !d) ? s.getPrevPaintRect() : null) && r(
			p), o = d && (s.__dirty & _n || !s.__isRendered) ? s.getPaintRect() : null) && r(o);
		for (a = this.__prevStartIndex; a < this.__prevEndIndex; ++a) {
			var s, p, d = (s = e[a]) && s.shouldBePainted(n, i, !0, !0);
			!s || d && s.__zr || !s.__isRendered || (p = s.getPrevPaintRect()) && r(p)
		}
		do {
			for (var f = !1, a = 0; a < l.length;)
				if (l[a].isZero()) l.splice(a, 1);
				else {
					for (var g = a + 1; g < l.length;) l[a].intersect(l[g]) ? (f = !0, l[a].union(l[g]), l
						.splice(g, 1)) : g++;
					a++
				}
		} while (f);
		return this._paintRects = l
	}, lx.prototype.debugGetPaintRects = function() {
		return (this._paintRects || []).slice()
	}, lx.prototype.resize = function(t, e) {
		var n = this.dpr,
			i = this.dom,
			r = i.style,
			o = this.domBack;
		r && (r.width = t + "px", r.height = e + "px"), i.width = t * n, i.height = e * n, o && (o.width = t *
			n, o.height = e * n, 1 !== n) && this.ctxBack.scale(n, n)
	}, lx.prototype.clear = function(t, o, e) {
		var n = this.dom,
			a = this.ctx,
			i = n.width,
			r = n.height,
			s = (o = o || this.clearColor, this.motionBlur && !t),
			l = this.lastFrameAlpha,
			u = this.dpr,
			h = this,
			c = (s && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy",
				this.ctxBack.drawImage(n, 0, 0, i / u, r / u)), this.domBack);

		function p(t, e, n, i) {
			var r;
			a.clearRect(t, e, n, i), o && "transparent" !== o && (r = void 0, mt(o) ? (r = (o.global || o
				.__width === n && o.__height === i) && o.__canvasGradient || cm(a, o, {
				x: 0,
				y: 0,
				width: n,
				height: i
			}), o.__canvasGradient = r, o.__width = n, o.__height = i) : vt(o) && (o.scaleX = o
				.scaleX || u, o.scaleY = o.scaleY || u, r = bm(a, o, {
					dirty: function() {
						h.setUnpainted(), h.painter.refresh()
					}
				})), a.save(), a.fillStyle = r || o, a.fillRect(t, e, n, i), a.restore()), s && (a.save(), a
				.globalAlpha = l, a.drawImage(c, t, e, n, i), a.restore())
		}!e || s ? p(0, 0, i, r) : e.length && E(e, function(t) {
			p(t.x * u, t.y * u, t.width * u, t.height * u)
		})
	};
	var ax, sx = lx;

	function lx(t, e, n) {
		var i, r = ax.call(this) || this,
			t = (r.motionBlur = !1, r.lastFrameAlpha = .7, r.dpr = 1, r.virtual = !1, r.config = {}, r
				.incremental = !1, r.zlevel = 0, r.maxRepaintRectCount = 5, r.__dirty = !0, r.__firstTimePaint = !0,
				r.__used = !1, r.__drawIndex = 0, r.__startIndex = 0, r.__endIndex = 0, r.__prevStartIndex = null, r
				.__prevEndIndex = null, n = n || cr, "string" == typeof t ? i = ox(t, e, n) : O(t) && (t = (i = t)
					.id), r.id = t, (r.dom = i).style);
		return t && (zt(i), i.onselectstart = function() {
			return !1
		}, t.padding = "0", t.margin = "0", t.borderWidth = "0"), r.painter = e, r.dpr = n, r
	}
	var ux = 314159;
	p.prototype.getType = function() {
		return "canvas"
	}, p.prototype.isSingleCanvas = function() {
		return this._singleCanvas
	}, p.prototype.getViewportRoot = function() {
		return this._domRoot
	}, p.prototype.getViewportRootOffset = function() {
		var t = this.getViewportRoot();
		if (t) return {
			offsetLeft: t.offsetLeft || 0,
			offsetTop: t.offsetTop || 0
		}
	}, p.prototype.refresh = function(t) {
		var e = this.storage.getDisplayList(!0),
			n = this._prevDisplayList,
			i = this._zlevelList;
		this._redrawId = Math.random(), this._paintList(e, n, t, this._redrawId);
		for (var r = 0; r < i.length; r++) {
			var o, a = i[r],
				a = this._layers[a];
			!a.__builtin__ && a.refresh && (o = 0 === r ? this._backgroundColor : null, a.refresh(o))
		}
		return this._opts.useDirtyRect && (this._prevDisplayList = e.slice()), this
	}, p.prototype.refreshHover = function() {
		this._paintHoverList(this.storage.getDisplayList(!1))
	}, p.prototype._paintHoverList = function(t) {
		var e = t.length,
			n = this._hoverlayer;
		if (n && n.clear(), e) {
			for (var i, r = {
					inHover: !0,
					viewWidth: this._width,
					viewHeight: this._height
				}, o = 0; o < e; o++) {
				var a = t[o];
				a.__inHover && (n = n || (this._hoverlayer = this.getLayer(1e5)), i || (i = n.ctx).save(), Rm(i,
					a, r, o === e - 1))
			}
			i && i.restore()
		}
	}, p.prototype.getHoverLayer = function() {
		return this.getLayer(1e5)
	}, p.prototype.paintOne = function(t, e) {
		Om(t, e)
	}, p.prototype._paintList = function(t, e, n, i) {
		var r, o, a;
		this._redrawId === i && (n = n || !1, this._updateLayerStatus(t), r = (o = this._doPaintList(t, e, n))
			.finished, o = o.needsRefreshHover, this._needsManuallyCompositing && this._compositeManually(),
			o && this._paintHoverList(t), r ? this.eachLayer(function(t) {
				t.afterBrush && t.afterBrush()
			}) : (a = this, In(function() {
				a._paintList(t, e, n, i)
			})))
	}, p.prototype._compositeManually = function() {
		var e = this.getLayer(ux).ctx,
			n = this._domRoot.width,
			i = this._domRoot.height;
		e.clearRect(0, 0, n, i), this.eachBuiltinLayer(function(t) {
			t.virtual && e.drawImage(t.dom, 0, 0, n, i)
		})
	}, p.prototype._doPaintList = function(d, f, g) {
		for (var y = this, m = [], v = this._opts.useDirtyRect, t = 0; t < this._zlevelList.length; t++) {
			var e = this._zlevelList[t],
				e = this._layers[e];
			e.__builtin__ && e !== this._hoverlayer && (e.__dirty || g) && m.push(e)
		}
		for (var _ = !0, x = !1, n = function(t) {
				function e(t) {
					var e = {
						inHover: !1,
						allClipped: !1,
						prevEl: null,
						viewWidth: y._width,
						viewHeight: y._height
					};
					for (i = s; i < r.__endIndex; i++) {
						var n = d[i];
						if (n.__inHover && (x = !0), y._doPaintEl(n, r, v, t, e, i === r.__endIndex - 1), l)
							if (15 < Date.now() - u) break
					}
					e.prevElClipPaths && o.restore()
				}
				var n, i, r = m[t],
					o = r.ctx,
					a = v && r.createRepaintRects(d, f, b._width, b._height),
					s = g ? r.__startIndex : r.__drawIndex,
					l = !g && r.incremental && Date.now,
					u = l && Date.now(),
					t = r.zlevel === b._zlevelList[0] ? b._backgroundColor : null;
				r.__startIndex !== r.__endIndex && (s !== r.__startIndex || (n = d[s]).incremental && n
					.notClear && !g) || r.clear(!1, t, a), -1 === s && (console.error(
					"For some unknown reason. drawIndex is -1"), s = r.__startIndex);
				if (a)
					if (0 === a.length) i = r.__endIndex;
					else
						for (var h = b.dpr, c = 0; c < a.length; ++c) {
							var p = a[c];
							o.save(), o.beginPath(), o.rect(p.x * h, p.y * h, p.width * h, p.height * h), o
								.clip(), e(p), o.restore()
						} else o.save(), e(), o.restore();
				r.__drawIndex = i, r.__drawIndex < r.__endIndex && (_ = !1)
			}, b = this, i = 0; i < m.length; i++) n(i);
		return w.wxa && E(this._layers, function(t) {
			t && t.ctx && t.ctx.draw && t.ctx.draw()
		}), {
			finished: _,
			needsRefreshHover: x
		}
	}, p.prototype._doPaintEl = function(t, e, n, i, r, o) {
		e = e.ctx;
		n ? (n = t.getPaintRect(), (!i || n && n.intersect(i)) && (Rm(e, t, r, o), t.setPrevPaintRect(n))) : Rm(
			e, t, r, o)
	}, p.prototype.getLayer = function(t, e) {
		this._singleCanvas && !this._needsManuallyCompositing && (t = ux);
		var n = this._layers[t];
		return n || ((n = new sx("zr_" + t, this, this.dpr)).zlevel = t, n.__builtin__ = !0, this._layerConfig[
			t] ? d(n, this._layerConfig[t], !0) : this._layerConfig[t - .01] && d(n, this._layerConfig[
			t - .01], !0), e && (n.virtual = e), this.insertLayer(t, n), n.initContext()), n
	}, p.prototype.insertLayer = function(t, e) {
		var n, i = this._layers,
			r = this._zlevelList,
			o = r.length,
			a = this._domRoot,
			s = null,
			l = -1;
		if (!i[t] && (n = e) && (n.__builtin__ || "function" == typeof n.resize && "function" == typeof n
				.refresh)) {
			if (0 < o && t > r[0]) {
				for (l = 0; l < o - 1 && !(r[l] < t && r[l + 1] > t); l++);
				s = i[r[l]]
			}
			r.splice(l + 1, 0, t), (i[t] = e).virtual || (s ? (n = s.dom).nextSibling ? a.insertBefore(e.dom, n
				.nextSibling) : a.appendChild(e.dom) : a.firstChild ? a.insertBefore(e.dom, a
				.firstChild) : a.appendChild(e.dom)), e.painter || (e.painter = this)
		}
	}, p.prototype.eachLayer = function(t, e) {
		for (var n = this._zlevelList, i = 0; i < n.length; i++) {
			var r = n[i];
			t.call(e, this._layers[r], r)
		}
	}, p.prototype.eachBuiltinLayer = function(t, e) {
		for (var n = this._zlevelList, i = 0; i < n.length; i++) {
			var r = n[i],
				o = this._layers[r];
			o.__builtin__ && t.call(e, o, r)
		}
	}, p.prototype.eachOtherLayer = function(t, e) {
		for (var n = this._zlevelList, i = 0; i < n.length; i++) {
			var r = n[i],
				o = this._layers[r];
			o.__builtin__ || t.call(e, o, r)
		}
	}, p.prototype.getLayers = function() {
		return this._layers
	}, p.prototype._updateLayerStatus = function(t) {
		function e(t) {
			r && (r.__endIndex !== t && (r.__dirty = !0), r.__endIndex = t)
		}
		if (this.eachBuiltinLayer(function(t, e) {
				t.__dirty = t.__used = !1
			}), this._singleCanvas)
			for (var n = 1; n < t.length; n++)
				if ((s = t[n]).zlevel !== t[n - 1].zlevel || s.incremental) {
					this._needsManuallyCompositing = !0;
					break
				} for (var i, r = null, o = 0, a = 0; a < t.length; a++) {
			var s, l = (s = t[a]).zlevel,
				u = void 0;
			i !== l && (i = l, o = 0), s.incremental ? ((u = this.getLayer(l + .001, this
				._needsManuallyCompositing)).incremental = !0, o = 1) : u = this.getLayer(l + (0 < o ? .01 :
				0), this._needsManuallyCompositing), u.__builtin__ || it("ZLevel " + l +
				" has been used by unkown layer " + u.id), u !== r && (u.__used = !0, u.__startIndex !==
				a && (u.__dirty = !0), u.__startIndex = a, u.incremental ? u.__drawIndex = -1 : u
				.__drawIndex = a, e(a), r = u), s.__dirty & _n && !s.__inHover && (u.__dirty = !0, u
				.incremental) && u.__drawIndex < 0 && (u.__drawIndex = a)
		}
		e(a), this.eachBuiltinLayer(function(t, e) {
			!t.__used && 0 < t.getElementCount() && (t.__dirty = !0, t.__startIndex = t.__endIndex = t
				.__drawIndex = 0), t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t
				.__startIndex)
		})
	}, p.prototype.clear = function() {
		return this.eachBuiltinLayer(this._clearLayer), this
	}, p.prototype._clearLayer = function(t) {
		t.clear()
	}, p.prototype.setBackgroundColor = function(t) {
		this._backgroundColor = t, E(this._layers, function(t) {
			t.setUnpainted()
		})
	}, p.prototype.configLayer = function(t, e) {
		if (e) {
			var n = this._layerConfig;
			n[t] ? d(n[t], e, !0) : n[t] = e;
			for (var i = 0; i < this._zlevelList.length; i++) {
				var r = this._zlevelList[i];
				r !== t && r !== t + .01 || d(this._layers[r], n[t], !0)
			}
		}
	}, p.prototype.delLayer = function(t) {
		var e = this._layers,
			n = this._zlevelList,
			i = e[t];
		i && (i.dom.parentNode.removeChild(i.dom), delete e[t], n.splice(C(n, t), 1))
	}, p.prototype.resize = function(t, e) {
		if (this._domRoot.style) {
			var n = this._domRoot,
				i = (n.style.display = "none", this._opts),
				r = this.root;
			if (null != t && (i.width = t), null != e && (i.height = e), t = dm(r, 0, i), e = dm(r, 1, i), n
				.style.display = "", this._width !== t || e !== this._height) {
				for (var o in n.style.width = t + "px", n.style.height = e + "px", this._layers) this._layers
					.hasOwnProperty(o) && this._layers[o].resize(t, e);
				this.refresh(!0)
			}
			this._width = t, this._height = e
		} else {
			if (null == t || null == e) return;
			this._width = t, this._height = e, this.getLayer(ux).resize(t, e)
		}
		return this
	}, p.prototype.clearLayer = function(t) {
		t = this._layers[t];
		t && t.clear()
	}, p.prototype.dispose = function() {
		this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null
	}, p.prototype.getRenderedCanvas = function(t) {
		if (this._singleCanvas && !this._compositeManually) return this._layers[ux].dom;
		var e = new sx("image", this, (t = t || {}).pixelRatio || this.dpr),
			n = (e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor), e.ctx);
		if (t.pixelRatio <= this.dpr) {
			this.refresh();
			var i = e.dom.width,
				r = e.dom.height;
			this.eachLayer(function(t) {
				t.__builtin__ ? n.drawImage(t.dom, 0, 0, i, r) : t.renderToCanvas && (n.save(), t
					.renderToCanvas(n), n.restore())
			})
		} else
			for (var o = {
					inHover: !1,
					viewWidth: this._width,
					viewHeight: this._height
				}, a = this.storage.getDisplayList(!0), s = 0, l = a.length; s < l; s++) {
				var u = a[s];
				Rm(n, u, o, s === l - 1)
			}
		return e.dom
	}, p.prototype.getWidth = function() {
		return this._width
	}, p.prototype.getHeight = function() {
		return this._height
	};
	var hx = p;

	function p(t, e, n, i) {
		this.type = "canvas", this._zlevelList = [], this._prevDisplayList = [], this._layers = {}, this
			._layerConfig = {}, this._needsManuallyCompositing = !1, this.type = "canvas";
		var r = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase();
		this._opts = n = P({}, n || {}), this.dpr = n.devicePixelRatio || cr, this._singleCanvas = r;
		(this.root = t).style && (zt(t), t.innerHTML = ""), this.storage = e;
		var o, a, e = this._zlevelList,
			s = (this._prevDisplayList = [], this._layers);
		r ? (o = (r = t).width, a = r.height, null != n.width && (o = n.width), null != n.height && (a = n.height),
			this.dpr = n.devicePixelRatio || 1, r.width = o * this.dpr, r.height = a * this.dpr, this._width =
			o, this._height = a, (o = new sx(r, this, this.dpr)).__builtin__ = !0, o.initContext(), (s[ux] = o)
			.zlevel = ux, e.push(ux), this._domRoot = t) : (this._width = dm(t, 0, n), this._height = dm(t, 1,
			n), o = this._domRoot = (a = this._width, r = this._height, (s = document.createElement("div"))
			.style.cssText = ["position:relative", "width:" + a + "px", "height:" + r + "px", "padding:0",
				"margin:0", "border-width:0"
			].join(";") + ";", s), t.appendChild(o))
	}
	u(dx, cx = g), dx.prototype.init = function(t, e, n) {
		cx.prototype.init.call(this, t, e, n), this._sourceManager = new xg(this), wg(this)
	}, dx.prototype.mergeOption = function(t, e) {
		cx.prototype.mergeOption.call(this, t, e), wg(this)
	}, dx.prototype.optionUpdated = function() {
		this._sourceManager.dirty()
	}, dx.prototype.getSourceManager = function() {
		return this._sourceManager
	}, dx.type = "dataset", dx.defaultOption = {
		seriesLayoutBy: od
	};
	var cx, px = dx;

	function dx() {
		var t = null !== cx && cx.apply(this, arguments) || this;
		return t.type = "dataset", t
	}
	u(yx, fx = Qg), yx.type = "dataset";
	var fx, gx = yx;

	function yx() {
		var t = null !== fx && fx.apply(this, arguments) || this;
		return t.type = "dataset", t
	}

	function mx(t) {
		t.registerComponentModel(px), t.registerComponentView(gx)
	}
	Z_([function(t) {
		t.registerPainter("canvas", hx)
	}, mx]), Z_(rx);
	var vx = {
			average: function(t) {
				for (var e = 0, n = 0, i = 0; i < t.length; i++) isNaN(t[i]) || (e += t[i], n++);
				return 0 === n ? NaN : e / n
			},
			sum: function(t) {
				for (var e = 0, n = 0; n < t.length; n++) e += t[n] || 0;
				return e
			},
			max: function(t) {
				for (var e = -1 / 0, n = 0; n < t.length; n++) t[n] > e && (e = t[n]);
				return isFinite(e) ? e : NaN
			},
			min: function(t) {
				for (var e = 1 / 0, n = 0; n < t.length; n++) t[n] < e && (e = t[n]);
				return isFinite(e) ? e : NaN
			},
			minmax: function(t) {
				for (var e = -1 / 0, n = -1 / 0, i = 0; i < t.length; i++) {
					var r = t[i],
						o = Math.abs(r);
					e < o && (e = o, n = r)
				}
				return isFinite(n) ? n : NaN
			},
			nearest: function(t) {
				return t[0]
			}
		},
		_x = function(t) {
			return Math.round(t.length / 2)
		};

	function xx(t) {
		return {
			seriesType: t,
			reset: function(t, e, n) {
				var i, r = t.getData(),
					o = t.get("sampling"),
					a = t.coordinateSystem,
					s = r.count();
				10 < s && "cartesian2d" === a.type && o && (i = a.getBaseAxis(), a = a.getOtherAxis(i), i = i
						.getExtent(), n = n.getDevicePixelRatio(), i = Math.abs(i[1] - i[0]) * (n || 1), n =
						Math.round(s / i), isFinite(n)) && 1 < n && ("lttb" === o && t.setData(r.lttbDownSample(
						r.mapDimension(a.dim), 1 / n)), s = void 0, V(o) ? s = vx[o] : D(o) && (s = o), s) && t
					.setData(r.downSample(r.mapDimension(a.dim), 1 / n, s, _x))
			}
		}
	}
	u(Sx, bx = Ug), Sx.prototype.getInitialData = function(t, e) {
		return Ev(null, this, {
			useEncodeDefaulter: !0
		})
	}, Sx.prototype.getMarkerPosition = function(t, p, e) {
		var d, f, n = this.coordinateSystem;
		return n && n.clampData ? (d = n.clampData(t), f = n.dataToPoint(d), e ? E(n.getAxes(), function(t, e) {
			if ("category" === t.type && null != p) {
				var n = t.getTicksCoords(),
					i = t.getTickModel().get("alignWithLabel"),
					r = d[e],
					o = "x1" === p[e] || "y1" === p[e];
				if (o && !i && (r += 1), !(n.length < 2))
					if (2 === n.length) f[e] = t.toGlobalCoord(t.getExtent()[o ? 1 : 0]);
					else {
						for (var a = void 0, s = void 0, l = 1, u = 0; u < n.length; u++) {
							var h = n[u].coord,
								c = u === n.length - 1 ? n[u - 1].tickValue + l : n[u].tickValue;
							if (c === r) {
								s = h;
								break
							}
							if (c < r) a = h;
							else if (null != a && r < c) {
								s = (h + a) / 2;
								break
							}
							1 === u && (l = c - n[0].tickValue)
						}
						null == s && (s = (a ? n[n.length - 1] : n[0]).coord), f[e] = t
							.toGlobalCoord(s)
					}
			}
		}) : (e = (t = this.getData()).getLayout("offset"), t = t.getLayout("size"), n = n.getBaseAxis()
			.isHorizontal() ? 0 : 1, f[n] += e + t / 2), f) : [NaN, NaN]
	}, Sx.type = "series.__base_bar__", Sx.defaultOption = {
		z: 2,
		coordinateSystem: "cartesian2d",
		legendHoverLink: !0,
		barMinHeight: 0,
		barMinAngle: 0,
		large: !1,
		largeThreshold: 400,
		progressive: 3e3,
		progressiveChunkMode: "mod"
	};
	var bx, Lc = Sx;

	function Sx() {
		var t = null !== bx && bx.apply(this, arguments) || this;
		return t.type = Sx.type, t
	}
	Ug.registerClass(Lc);
	u(Ix, Mx = Lc), Ix.prototype.getInitialData = function() {
		return Ev(null, this, {
			useEncodeDefaulter: !0,
			createInvertedIndices: !!this.get("realtimeSort", !0) || null
		})
	}, Ix.prototype.getProgressive = function() {
		return !!this.get("large") && this.get("progressive")
	}, Ix.prototype.getProgressiveThreshold = function() {
		var t = this.get("progressiveThreshold"),
			e = this.get("largeThreshold");
		return t = t < e ? e : t
	}, Ix.prototype.brushSelector = function(t, e, n) {
		return n.rect(e.getItemLayout(t))
	}, Ix.type = "series.bar", Ix.dependencies = ["grid", "polar"], Ix.defaultOption = Uc(Lc.defaultOption, {
		clip: !0,
		roundCap: !1,
		showBackground: !1,
		backgroundStyle: {
			color: "rgba(180, 180, 180, 0.2)",
			borderColor: null,
			borderWidth: 0,
			borderType: "solid",
			borderRadius: 0,
			shadowBlur: 0,
			shadowColor: null,
			shadowOffsetX: 0,
			shadowOffsetY: 0,
			opacity: 1
		},
		select: {
			itemStyle: {
				borderColor: "#212121"
			}
		},
		realtimeSort: !1
	});
	var Mx, Tx = Ix;

	function Ix() {
		var t = null !== Mx && Mx.apply(this, arguments) || this;
		return t.type = Ix.type, t
	}

	function Cx(t, e, n, i, r) {
		var o = t.getArea(),
			a = o.x,
			s = o.y,
			l = o.width,
			o = o.height,
			u = n.get(["lineStyle", "width"]) || 2,
			h = (a -= u / 2, s -= u / 2, l += u, o += u, l = Math.ceil(l), a !== Math.floor(a) && (a = Math.floor(
				a), l++), new Ns({
				shape: {
					x: a,
					y: s,
					width: l,
					height: o
				}
			}));
		return e && (e = (u = t.getBaseAxis()).isHorizontal(), t = u.inverse, e ? (t && (h.shape.x += l), h.shape
			.width = 0) : (t || (h.shape.y += o), h.shape.height = 0), u = D(r) ? function(t) {
			r(t, h)
		} : null, Nh(h, {
			shape: {
				width: l,
				height: o,
				x: a,
				y: s
			}
		}, n, null, i, u)), h
	}

	function Dx(t, e, n) {
		var i = t.getArea(),
			r = io(i.r0, 1),
			o = io(i.r, 1),
			a = new zu({
				shape: {
					cx: io(t.cx, 1),
					cy: io(t.cy, 1),
					r0: r,
					r: o,
					startAngle: i.startAngle,
					endAngle: i.endAngle,
					clockwise: i.clockwise
				}
			});
		return e && ("angle" === t.getBaseAxis().dim ? a.shape.endAngle = i.startAngle : a.shape.r = r, Nh(a, {
			shape: {
				endAngle: i.endAngle,
				r: o
			}
		}, n)), a
	}
	var kx, Ax = function() {
			this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI,
				this.clockwise = !0
		},
		Lx = (u(Px, kx = j), Px.prototype.getDefaultShape = function() {
			return new Ax
		}, Px.prototype.buildPath = function(t, e) {
			var n = e.cx,
				i = e.cy,
				r = Math.max(e.r0 || 0, 0),
				o = Math.max(e.r, 0),
				a = .5 * (o - r),
				s = r + a,
				l = e.startAngle,
				u = e.endAngle,
				e = e.clockwise,
				h = 2 * Math.PI,
				c = e ? u - l < h : l - u < h,
				h = (c || (l = u - (e ? h : -h)), Math.cos(l)),
				p = Math.sin(l),
				d = Math.cos(u),
				f = Math.sin(u);
			c ? (t.moveTo(h * r + n, p * r + i), t.arc(h * s + n, p * s + i, a, -Math.PI + l, l, !e)) : t
				.moveTo(h * o + n, p * o + i), t.arc(n, i, o, l, u, !e), t.arc(d * s + n, f * s + i, a, u - 2 *
					Math.PI, u - Math.PI, !e), 0 !== r && t.arc(n, i, r, u, l, e)
		}, Px);

	function Px(t) {
		t = kx.call(this, t) || this;
		return t.type = "sausage", t
	}

	function Ox(t, e) {
		return t.type === e
	}

	function Rx(t, e) {
		var n, i = t.mapDimensionsAll("defaultedLabel"),
			r = i.length;
		if (1 === r) return null != (n = kf(t, e, i[0])) ? n + "" : null;
		if (r) {
			for (var o = [], a = 0; a < i.length; a++) o.push(kf(t, e, i[a]));
			return o.join(" ")
		}
	}

	function Nx(t, e) {
		var n = t.mapDimensionsAll("defaultedLabel");
		if (!F(e)) return e + "";
		for (var i = [], r = 0; r < n.length; r++) {
			var o = t.getDimensionIndex(n[r]);
			0 <= o && i.push(e[o])
		}
		return i.join(" ")
	}

	function Ex(t, e, n) {
		return e * Math.sin(t) * (n ? -1 : 1)
	}

	function zx(t, e, n) {
		return e * Math.cos(t) * (n ? 1 : -1)
	}

	function Bx(t, e, n) {
		t = t.get("borderRadius");
		if (null == t) return n ? {
			cornerRadius: 0
		} : null;
		F(t) || (t = [t, t, t, t]);
		var i = Math.abs(e.r || 0 - e.r0 || 0);
		return {
			cornerRadius: B(t, function(t) {
				return Ar(t, i)
			})
		}
	}
	var Fx = Math.max,
		Vx = Math.min;
	u(Wx, Gx = iy), Wx.prototype.render = function(t, e, n, i) {
		this._model = t, this._removeOnRenderedListener(n), this._updateDrawMode(t);
		var r = t.get("coordinateSystem");
		"cartesian2d" !== r && "polar" !== r || (this._progressiveEls = null, this._isLargeDraw ? this
			._renderLarge(t, e, n) : this._renderNormal(t, e, n, i))
	}, Wx.prototype.incrementalPrepareRender = function(t) {
		this._clear(), this._updateDrawMode(t), this._updateLargeClip(t)
	}, Wx.prototype.incrementalRender = function(t, e) {
		this._progressiveEls = [], this._incrementalRenderLarge(t, e)
	}, Wx.prototype.eachRendered = function(t) {
		pc(this._progressiveEls || this.group, t)
	}, Wx.prototype._updateDrawMode = function(t) {
		t = t.pipelineContext.large;
		null != this._isLargeDraw && t === this._isLargeDraw || (this._isLargeDraw = t, this._clear())
	}, Wx.prototype._renderNormal = function(a, t, e, n) {
		var s, i, r, l = this.group,
			u = a.getData(),
			h = this._data,
			c = a.coordinateSystem,
			p = c.getBaseAxis(),
			d = ("cartesian2d" === c.type ? s = p.isHorizontal() : "polar" === c.type && (s = "angle" === p
				.dim), a.isAnimationEnabled() ? a : null),
			f = function(t, e) {
				var t = t.get("realtimeSort", !0),
					n = e.getBaseAxis();
				if (t && "category" === n.type && "cartesian2d" === e.type) return {
					baseAxis: n,
					otherAxis: e.getOtherAxis(n)
				}
			}(a, c),
			g = (f && this._enableRealtimeSort(f, u, e), a.get("clip", !0) || f),
			y = (e = u, r = (i = c).getArea && i.getArea(), !Ox(i, "cartesian2d") || "category" === (i = i
				.getBaseAxis()).type && i.onBand || (e = e.getLayout("bandWidth"), i.isHorizontal() ? (r
				.x -= e, r.width += 2 * e) : (r.y -= e, r.height += 2 * e)), r),
			m = (l.removeClipPath(), a.get("roundCap", !0)),
			v = a.get("showBackground", !0),
			_ = a.getModel("backgroundStyle"),
			x = _.get("borderRadius") || 0,
			b = [],
			w = this._backgroundEls,
			S = n && n.isInitSort,
			M = n && "changeAxisOrder" === n.type;

		function T(t) {
			var e = $x[c.type](u, t),
				n = (n = s, new("polar" === c.type ? zu : Ns)({
					shape: ab(n, e, c),
					silent: !0,
					z2: 0
				}));
			return n.useStyle(_.getItemStyle()), "cartesian2d" === c.type ? n.setShape("r", x) : n.setShape(
				"cornerRadius", x), b[t] = n
		}
		u.diff(h).add(function(t) {
			var e, n, i = u.getItemModel(t),
				r = $x[c.type](u, t, i);
			v && T(t), u.hasValue(t) && Kx[c.type](r) && (e = !1, g && (e = Ux[c.type](y, r)), n = Xx[c
				.type](a, u, t, r, s, d, p.model, !1, m), f && (n.forceLabelAnimation = !0), Jx(
				n, u, t, i, r, a, s, "polar" === c.type), S ? n.attr({
				shape: r
			}) : f ? Yx(f, d, n, r, t, s, !1, !1) : Nh(n, {
				shape: r
			}, a, t), u.setItemGraphicEl(t, n), l.add(n), n.ignore = e)
		}).update(function(t, e) {
			var n, i = u.getItemModel(t),
				r = $x[c.type](u, t, i),
				o = (v && (o = void 0, 0 === w.length ? o = T(e) : ((o = w[e]).useStyle(_
					.getItemStyle()), "cartesian2d" === c.type ? o.setShape("r", x) : o
					.setShape("cornerRadius", x), b[t] = o), n = $x[c.type](u, t), Rh(o, {
					shape: ab(s, n, c)
				}, d, t)), h.getItemGraphicEl(e));
			u.hasValue(t) && Kx[c.type](r) ? (n = !1, g && (n = Ux[c.type](y, r)) && l.remove(o), o ?
				Vh(o) : o = Xx[c.type](a, u, t, r, s, d, p.model, !!o, m), f && (o
					.forceLabelAnimation = !0), M ? (e = o.getTextContent()) && null != (e = Tc(e))
				.prevValue && (e.prevValue = e.value) : Jx(o, u, t, i, r, a, s, "polar" === c.type),
				S ? o.attr({
					shape: r
				}) : f ? Yx(f, d, o, r, t, s, !0, M) : Rh(o, {
					shape: r
				}, a, t, null), u.setItemGraphicEl(t, o), o.ignore = n, l.add(o)) : l.remove(o)
		}).remove(function(t) {
			var e = h.getItemGraphicEl(t);
			e && Fh(e, a, t)
		}).execute();
		var o = this._backgroundGroup || (this._backgroundGroup = new Ur);
		o.removeAll();
		for (var I = 0; I < b.length; ++I) o.add(b[I]);
		l.add(o), this._backgroundEls = b, this._data = u
	}, Wx.prototype._renderLarge = function(t, e, n) {
		this._clear(), rb(t, this.group), this._updateLargeClip(t)
	}, Wx.prototype._incrementalRenderLarge = function(t, e) {
		this._removeBackground(), rb(e, this.group, this._progressiveEls, !0)
	}, Wx.prototype._updateLargeClip = function(t) {
		var e, n, i = t.get("clip", !0) && (i = t.coordinateSystem, r = !1, t = t, i ? "polar" === i.type ? Dx(
				i, r, t) : "cartesian2d" === i.type ? Cx(i, r, t, e, n) : null : null),
			r = this.group;
		i ? r.setClipPath(i) : r.removeClipPath()
	}, Wx.prototype._enableRealtimeSort = function(t, e, n) {
		var i, r, o = this;
		e.count() && (i = t.baseAxis, this._isFirstFrame ? (this._dispatchInitSort(e, t, n), this
			._isFirstFrame = !1) : (r = function(t) {
			t = e.getItemGraphicEl(t), t = t && t.shape;
			return t && Math.abs(i.isHorizontal() ? t.height : t.width) || 0
		}, this._onRendered = function() {
			o._updateSortWithinSameData(e, r, i, n)
		}, n.getZr().on("rendered", this._onRendered)))
	}, Wx.prototype._dataSort = function(t, e, i) {
		var r = [];
		return t.each(t.mapDimension(e.dim), function(t, e) {
			var n = i(e);
			r.push({
				dataIndex: e,
				mappedValue: null == n ? NaN : n,
				ordinalNumber: t
			})
		}), r.sort(function(t, e) {
			return e.mappedValue - t.mappedValue
		}), {
			ordinalNumbers: B(r, function(t) {
				return t.ordinalNumber
			})
		}
	}, Wx.prototype._isOrderChangedWithinSameData = function(t, e, n) {
		for (var i = n.scale, r = t.mapDimension(n.dim), o = Number.MAX_VALUE, a = 0, s = i.getOrdinalMeta()
				.categories.length; a < s; ++a) {
			var l = t.rawIndexOf(r, i.getRawOrdinalNumber(a)),
				l = l < 0 ? Number.MIN_VALUE : e(t.indexOfRawIndex(l));
			if (o < l) return !0;
			o = l
		}
		return !1
	}, Wx.prototype._isOrderDifferentInView = function(t, e) {
		for (var n = e.scale, e = n.getExtent(), i = Math.max(0, e[0]), r = Math.min(e[1], n.getOrdinalMeta()
				.categories.length - 1); i <= r; ++i)
			if (t.ordinalNumbers[i] !== n.getRawOrdinalNumber(i)) return !0
	}, Wx.prototype._updateSortWithinSameData = function(t, e, n, i) {
		this._isOrderChangedWithinSameData(t, e, n) && (t = this._dataSort(t, n, e), this
			._isOrderDifferentInView(t, n)) && (this._removeOnRenderedListener(i), i.dispatchAction({
			type: "changeAxisOrder",
			componentType: n.dim + "Axis",
			axisId: n.index,
			sortInfo: t
		}))
	}, Wx.prototype._dispatchInitSort = function(e, n, t) {
		var i = n.baseAxis,
			r = this._dataSort(e, i, function(t) {
				return e.get(e.mapDimension(n.otherAxis.dim), t)
			});
		t.dispatchAction({
			type: "changeAxisOrder",
			componentType: i.dim + "Axis",
			isInitSort: !0,
			axisId: i.index,
			sortInfo: r
		})
	}, Wx.prototype.remove = function(t, e) {
		this._clear(this._model), this._removeOnRenderedListener(e)
	}, Wx.prototype.dispose = function(t, e) {
		this._removeOnRenderedListener(e)
	}, Wx.prototype._removeOnRenderedListener = function(t) {
		this._onRendered && (t.getZr().off("rendered", this._onRendered), this._onRendered = null)
	}, Wx.prototype._clear = function(e) {
		var t = this.group,
			n = this._data;
		e && e.isAnimationEnabled() && n && !this._isLargeDraw ? (this._removeBackground(), this
			._backgroundEls = [], n.eachItemGraphicEl(function(t) {
				Fh(t, e, k(t).dataIndex)
			})) : t.removeAll(), this._data = null, this._isFirstFrame = !0
	}, Wx.prototype._removeBackground = function() {
		this.group.remove(this._backgroundGroup), this._backgroundGroup = null
	}, Wx.type = "bar";
	var Gx, Hx = Wx;

	function Wx() {
		var t = Gx.call(this) || this;
		return t.type = Wx.type, t._isFirstFrame = !0, t
	}
	var Ux = {
			cartesian2d: function(t, e) {
				var n = e.width < 0 ? -1 : 1,
					i = e.height < 0 ? -1 : 1,
					r = (n < 0 && (e.x += e.width, e.width = -e.width), i < 0 && (e.y += e.height, e.height = -e
						.height), t.x + t.width),
					o = t.y + t.height,
					a = Fx(e.x, t.x),
					s = Vx(e.x + e.width, r),
					t = Fx(e.y, t.y),
					l = Vx(e.y + e.height, o),
					u = s < a,
					h = l < t;
				return e.x = u && r < a ? s : a, e.y = h && o < t ? l : t, e.width = u ? 0 : s - a, e.height =
					h ? 0 : l - t, n < 0 && (e.x += e.width, e.width = -e.width), i < 0 && (e.y += e.height, e
						.height = -e.height), u || h
			},
			polar: function(t, e) {
				var n, i = e.r0 <= e.r ? 1 : -1,
					r = (i < 0 && (n = e.r, e.r = e.r0, e.r0 = n), Vx(e.r, t.r)),
					t = Fx(e.r0, t.r0),
					r = (e.r = r) - (e.r0 = t) < 0;
				return i < 0 && (n = e.r, e.r = e.r0, e.r0 = n), r
			}
		},
		Xx = {
			cartesian2d: function(t, e, n, i, r, o, a, s, l) {
				i = new Ns({
					shape: P({}, i),
					z2: 1
				});
				return i.__dataIndex = n, i.name = "item", o && (i.shape[r ? "height" : "width"] = 0), i
			},
			polar: function(t, e, n, i, r, o, a, s, l) {
				var b, w, l = !r && l ? Lx : zu,
					u = new l({
						shape: i,
						z2: 1
					}),
					h = (u.name = "item", Qx(r));
				return u.calculateTextPosition = (b = h, w = ({
					isRoundCap: l === Lx
				} || {}).isRoundCap, function(t, e, n) {
					var i = e.position;
					if (!i || i instanceof Array) return Lr(t, e, n);
					var i = b(i),
						r = null != e.distance ? e.distance : 5,
						o = this.shape,
						a = o.cx,
						s = o.cy,
						l = o.r,
						u = o.r0,
						h = (l + u) / 2,
						c = o.startAngle,
						p = o.endAngle,
						d = (c + p) / 2,
						f = w ? Math.abs(l - u) / 2 : 0,
						g = Math.cos,
						y = Math.sin,
						m = a + l * g(c),
						v = s + l * y(c),
						_ = "left",
						x = "top";
					switch (i) {
						case "startArc":
							m = a + (u - r) * g(d), v = s + (u - r) * y(d), _ = "center", x = "top";
							break;
						case "insideStartArc":
							m = a + (u + r) * g(d), v = s + (u + r) * y(d), _ = "center", x = "bottom";
							break;
						case "startAngle":
							m = a + h * g(c) + Ex(c, r + f, !1), v = s + h * y(c) + zx(c, r + f, !1),
								_ = "right", x = "middle";
							break;
						case "insideStartAngle":
							m = a + h * g(c) + Ex(c, f - r, !1), v = s + h * y(c) + zx(c, f - r, !1),
								_ = "left", x = "middle";
							break;
						case "middle":
							m = a + h * g(d), v = s + h * y(d), _ = "center", x = "middle";
							break;
						case "endArc":
							m = a + (l + r) * g(d), v = s + (l + r) * y(d), _ = "center", x = "bottom";
							break;
						case "insideEndArc":
							m = a + (l - r) * g(d), v = s + (l - r) * y(d), _ = "center", x = "top";
							break;
						case "endAngle":
							m = a + h * g(p) + Ex(p, r + f, !0), v = s + h * y(p) + zx(p, r + f, !0),
								_ = "left", x = "middle";
							break;
						case "insideEndAngle":
							m = a + h * g(p) + Ex(p, f - r, !0), v = s + h * y(p) + zx(p, f - r, !0),
								_ = "right", x = "middle";
							break;
						default:
							return Lr(t, e, n)
					}
					return (t = t || {}).x = m, t.y = v, t.align = _, t.verticalAlign = x, t
				}), o && (h = {}, u.shape[l = r ? "r" : "endAngle"] = r ? i.r0 : i.startAngle, h[l] = i[l],
					(s ? Rh : Nh)(u, {
						shape: h
					}, o)), u
			}
		};

	function Yx(t, e, n, i, r, o, a, s) {
		var l, o = o ? (l = {
			x: i.x,
			width: i.width
		}, {
			y: i.y,
			height: i.height
		}) : (l = {
			y: i.y,
			height: i.height
		}, {
			x: i.x,
			width: i.width
		});
		s || (a ? Rh : Nh)(n, {
			shape: o
		}, e, r, null), (a ? Rh : Nh)(n, {
			shape: l
		}, e ? t.baseAxis.model : null, r)
	}

	function qx(t, e) {
		for (var n = 0; n < e.length; n++)
			if (!isFinite(t[e[n]])) return 1
	}
	var Zx = ["x", "y", "width", "height"],
		jx = ["cx", "cy", "r", "startAngle", "endAngle"],
		Kx = {
			cartesian2d: function(t) {
				return !qx(t, Zx)
			},
			polar: function(t) {
				return !qx(t, jx)
			}
		},
		$x = {
			cartesian2d: function(t, e, n) {
				var t = t.getItemLayout(e),
					i = n && (e = t, i = (n = n).get(["itemStyle", "borderColor"])) && "none" !== i ? (i = n
						.get(["itemStyle", "borderWidth"]) || 0, n = isNaN(e.width) ? Number.MAX_VALUE : Math
						.abs(e.width), e = isNaN(e.height) ? Number.MAX_VALUE : Math.abs(e.height), Math.min(i,
							n, e)) : 0,
					n = 0 < t.width ? 1 : -1,
					e = 0 < t.height ? 1 : -1;
				return {
					x: t.x + n * i / 2,
					y: t.y + e * i / 2,
					width: t.width - n * i,
					height: t.height - e * i
				}
			},
			polar: function(t, e, n) {
				t = t.getItemLayout(e);
				return {
					cx: t.cx,
					cy: t.cy,
					r0: t.r0,
					r: t.r,
					startAngle: t.startAngle,
					endAngle: t.endAngle,
					clockwise: t.clockwise
				}
			}
		};

	function Qx(t) {
		return e = t ? "Arc" : "Angle",
			function(t) {
				switch (t) {
					case "start":
					case "insideStart":
					case "end":
					case "insideEnd":
						return t + e;
					default:
						return t
				}
			};
		var e
	}

	function Jx(t, e, n, i, r, o, a, s) {
		var l = e.getItemVisual(n, "style"),
			u = (s ? o.get("roundCap") || (P(u = t.shape, Bx(i.getModel("itemStyle"), u, !0)), t.setShape(u)) : (u =
				i.get(["itemStyle", "borderRadius"]) || 0, t.setShape("r", u)), t.useStyle(l), i.getShallow(
				"cursor")),
			u = (u && t.attr("cursor", u), s ? a ? r.r >= r.r0 ? "endArc" : "startArc" : r.endAngle >= r
				.startAngle ? "endAngle" : "startAngle" : a ? 0 <= r.height ? "bottom" : "top" : 0 <= r.width ?
				"right" : "left"),
			h = vc(i),
			l = (mc(t, h, {
				labelFetcher: o,
				labelDataIndex: n,
				defaultText: Rx(o.getData(), n),
				inheritColor: l.fill,
				defaultOpacity: l.opacity,
				defaultOutsidePosition: u
			}), t.getTextContent()),
			h = (s && l && (s = i.get(["label", "position"]), t.textConfig.inside = "middle" === s || null,
					function(t, e, n, i) {
						if (G(i)) t.setTextConfig({
							rotation: i
						});
						else if (F(e)) t.setTextConfig({
							rotation: 0
						});
						else {
							var r, i = t.shape,
								o = i.clockwise ? i.startAngle : i.endAngle,
								a = i.clockwise ? i.endAngle : i.startAngle,
								s = (o + a) / 2,
								i = n(e);
							switch (i) {
								case "startArc":
								case "insideStartArc":
								case "middle":
								case "insideEndArc":
								case "endArc":
									r = s;
									break;
								case "startAngle":
								case "insideStartAngle":
									r = o;
									break;
								case "endAngle":
								case "insideEndAngle":
									r = a;
									break;
								default:
									return t.setTextConfig({
										rotation: 0
									})
							}
							n = 1.5 * Math.PI - r;
							"middle" === i && n > Math.PI / 2 && n < 1.5 * Math.PI && (n -= Math.PI), t
								.setTextConfig({
									rotation: n
								})
						}
					}(t, "outside" === s ? u : s, Qx(a), i.get(["label", "rotate"]))), u = l, s = h, a = o
				.getRawValue(n), l = function(t) {
					return Nx(e, t)
				}, u && ((u = Tc(u)).prevValue = u.value, u.value = a, a = s.normal, u.valueAnimation = a.get(
					"valueAnimation"), u.valueAnimation) && (u.precision = a.get("precision"), u
					.defaultInterpolatedText = l, u.statesModels = s), i.getModel(["emphasis"]));
		Gl(t, h.get("focus"), h.get("blurScope"), h.get("disabled")), Ul(t, i), null != (o = r).startAngle &&
			null != o.endAngle && o.startAngle === o.endAngle && (t.style.fill = "none", t.style.stroke = "none", E(
				t.states,
				function(t) {
					t.style && (t.style.fill = t.style.stroke = "none")
				}))
	}
	var tb, eb = function() {},
		nb = (u(ib, tb = j), ib.prototype.getDefaultShape = function() {
			return new eb
		}, ib.prototype.buildPath = function(t, e) {
			for (var n = e.points, i = this.baseDimIdx, r = 1 - this.baseDimIdx, o = [], a = [], s = this
					.barWidth, l = 0; l < n.length; l += 3) a[i] = s, a[r] = n[l + 2], o[i] = n[l + i], o[r] =
				n[l + r], t.rect(o[0], o[1], a[0], a[1])
		}, ib);

	function ib(t) {
		t = tb.call(this, t) || this;
		return t.type = "largeBar", t
	}

	function rb(t, e, n, i) {
		var r = t.getData(),
			o = r.getLayout("valueAxisHorizontal") ? 1 : 0,
			a = r.getLayout("largeDataIndices"),
			s = r.getLayout("size"),
			l = t.getModel("backgroundStyle"),
			u = r.getLayout("largeBackgroundPoints"),
			l = (u && ((u = new nb({
				shape: {
					points: u
				},
				incremental: !!i,
				silent: !0,
				z2: 0
			})).baseDimIdx = o, u.largeDataIndices = a, u.barWidth = s, u.useStyle(l.getItemStyle()), e.add(
				u), n) && n.push(u), new nb({
				shape: {
					points: r.getLayout("largePoints")
				},
				incremental: !!i,
				ignoreCoarsePointer: !0,
				z2: 1
			}));
		l.baseDimIdx = o, l.largeDataIndices = a, l.barWidth = s, e.add(l), l.useStyle(r.getVisual("style")), k(l)
			.seriesIndex = t.seriesIndex, t.get("silent") || (l.on("mousedown", ob), l.on("mousemove", ob)), n && n
			.push(l)
	}
	var ob = dy(function(t) {
		t = function(t, e, n) {
			for (var i = t.baseDimIdx, r = 1 - i, o = t.shape.points, a = t.largeDataIndices, s = [],
					l = [], u = t.barWidth, h = 0, c = o.length / 3; h < c; h++) {
				var p = 3 * h;
				if (l[i] = u, l[r] = o[2 + p], s[i] = o[p + i], s[r] = o[p + r], l[r] < 0 && (s[r] += l[
						r], l[r] = -l[r]), s[0] <= e && e <= s[0] + l[0] && s[1] <= n && n <= s[1] + l[
						1]) return a[h]
			}
			return -1
		}(this, t.offsetX, t.offsetY);
		k(this).dataIndex = 0 <= t ? t : null
	}, 30, !1);

	function ab(t, e, n) {
		var i, r;
		return Ox(n, "cartesian2d") ? (i = e, r = n.getArea(), {
			x: (t ? i : r).x,
			y: (t ? r : i).y,
			width: (t ? i : r).width,
			height: (t ? r : i).height
		}) : {
			cx: (r = n.getArea()).cx,
			cy: r.cy,
			r0: (t ? r : e).r0,
			r: (t ? r : e).r,
			startAngle: t ? e.startAngle : 0,
			endAngle: t ? e.endAngle : 2 * Math.PI
		}
	}
	Z_(function(t) {
		t.registerChartView(Hx), t.registerSeriesModel(Tx), t.registerLayout(t.PRIORITY.VISUAL.LAYOUT, S(p_,
			"bar")), t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, {
			seriesType: "bar",
			plan: ty(),
			reset: function(t) {
				var e, x, n, b, w, S, i, r, M, T, I, C, D, k, A, L;
				if (d_(t)) return e = t.getData(), i = (x = t.coordinateSystem).getBaseAxis(),
					n = x.getOtherAxis(i), b = e.getDimensionIndex(e.mapDimension(n.dim)),
					w = e.getDimensionIndex(e.mapDimension(i.dim)), S = t.get(
						"showBackground", !0), i = e.mapDimension(n.dim), r = e
					.getCalculationInfo("stackResultDimension"), M = Rv(e, i) && !!e
					.getCalculationInfo("stackedOnSeries"), T = n.isHorizontal(), I = n
					.toGlobalCoord(n.dataToCoord("log" === n.type ? 1 : 0)), C = f_(t), D =
					t.get("barMinHeight") || 0, k = r && e.getDimensionIndex(r), A = e
					.getLayout("size"), L = e.getLayout("offset"), {
						progress: function(t, e) {
							for (var n, i = t.count, r = C && a_(3 * i), o = C && S &&
									a_(3 * i), a = C && a_(i), s = x.master.getRect(),
									l = T ? s.width : s.height, u = e.getStore(), h =
									0; null != (n = t.next());) {
								var c, p = u.get(M ? k : b, n),
									d = u.get(w, n),
									f = I,
									g = void 0,
									y = (M && (g = +p - u.get(b, n)), void 0),
									m = void 0,
									v = void 0,
									_ = void 0;
								T ? (c = x.dataToPoint([p, d]), y = f = M ? x
										.dataToPoint([g, d])[0] : f, m = c[1] + L, v =
										c[0] - f, _ = A, Math.abs(v) < D && (v = (v <
											0 ? -1 : 1) * D)) : (c = x.dataToPoint([d,
											p]), M && (f = x.dataToPoint([d, g])[1]),
										y = c[0] + L, m = f, v = A, _ = c[1] - f, Math
										.abs(_) < D && (_ = (_ <= 0 ? -1 : 1) * D)), C ?
									(r[h] = y, r[h + 1] = m, r[h + 2] = T ? v : _, o &&
										(o[h] = T ? s.x : y, o[h + 1] = T ? m : s.y, o[
											h + 2] = l), a[n] = n) : e.setItemLayout(
									n, {
										x: y,
										y: m,
										width: v,
										height: _
									}), h += 3
							}
							C && e.setLayout({
								largePoints: r,
								largeDataIndices: a,
								largeBackgroundPoints: o,
								valueAxisHorizontal: T
							})
						}
					}
			}
		}), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, xx("bar")), t.registerAction({
			type: "changeAxisOrder",
			event: "changeAxisOrder",
			update: "update"
		}, function(e, t) {
			var n = e.componentType || "series";
			t.eachComponent({
				mainType: n,
				query: e
			}, function(t) {
				e.sortInfo && t.axis.setCategorySortInfo(e.sortInfo)
			})
		})
	});
	u(ub, sb = Ug), ub.prototype.getInitialData = function(t) {
		return Ev(null, this, {
			useEncodeDefaulter: !0
		})
	}, ub.prototype.getLegendIcon = function(t) {
		var e = new Ur,
			n = sm("line", 0, t.itemHeight / 2, t.itemWidth, 0, t.lineStyle.stroke, !1),
			n = (e.add(n), n.setStyle(t.lineStyle), this.getData().getVisual("symbol")),
			i = this.getData().getVisual("symbolRotate"),
			n = "none" === n ? "circle" : n,
			r = .8 * t.itemHeight,
			r = sm(n, (t.itemWidth - r) / 2, (t.itemHeight - r) / 2, r, r, t.itemStyle.fill),
			i = (e.add(r), r.setStyle(t.itemStyle), "inherit" === t.iconRotate ? i : t.iconRotate || 0);
		return r.rotation = i * Math.PI / 180, r.setOrigin([t.itemWidth / 2, t.itemHeight / 2]), -1 < n.indexOf(
			"empty") && (r.style.stroke = r.style.fill, r.style.fill = "#fff", r.style.lineWidth = 2), e
	}, ub.type = "series.line", ub.dependencies = ["grid", "polar"], ub.defaultOption = {
		z: 3,
		coordinateSystem: "cartesian2d",
		legendHoverLink: !0,
		clip: !0,
		label: {
			position: "top"
		},
		endLabel: {
			show: !1,
			valueAnimation: !0,
			distance: 8
		},
		lineStyle: {
			width: 2,
			type: "solid"
		},
		emphasis: {
			scale: !0
		},
		step: !1,
		smooth: !1,
		smoothMonotone: null,
		symbol: "emptyCircle",
		symbolSize: 4,
		symbolRotate: null,
		showSymbol: !0,
		showAllSymbol: "auto",
		connectNulls: !1,
		sampling: "none",
		animationEasing: "linear",
		progressive: 0,
		hoverLayerThreshold: 1 / 0,
		universalTransition: {
			divideShape: "clone"
		},
		triggerLineEvent: !1
	};
	var sb, lb = ub;

	function ub() {
		var t = null !== sb && sb.apply(this, arguments) || this;
		return t.type = ub.type, t.hasSymbolVisual = !0, t
	}
	u(pb, hb = Ur), pb.prototype._createSymbol = function(t, e, n, i, r) {
		this.removeAll();
		r = sm(t, -1, -1, 2, 2, null, r);
		r.attr({
			z2: 100,
			culling: !0,
			scaleX: i[0] / 2,
			scaleY: i[1] / 2
		}), r.drift = db, this._symbolType = t, this.add(r)
	}, pb.prototype.stopSymbolAnimation = function(t) {
		this.childAt(0).stopAnimation(null, t)
	}, pb.prototype.getSymbolType = function() {
		return this._symbolType
	}, pb.prototype.getSymbolPath = function() {
		return this.childAt(0)
	}, pb.prototype.highlight = function() {
		Dl(this.childAt(0))
	}, pb.prototype.downplay = function() {
		kl(this.childAt(0))
	}, pb.prototype.setZ = function(t, e) {
		var n = this.childAt(0);
		n.zlevel = t, n.z = e
	}, pb.prototype.setDraggable = function(t, e) {
		var n = this.childAt(0);
		n.draggable = t, n.cursor = !e && t ? "move" : n.cursor
	}, pb.prototype.updateData = function(t, e, n, i) {
		this.silent = !1;
		var r, o, a, s = t.getItemVisual(e, "symbol") || "circle",
			l = t.hostModel,
			u = pb.getSymbolSize(t, e),
			h = s !== this._symbolType,
			c = i && i.disableAnimation;
		h ? (r = t.getItemVisual(e, "symbolKeepAspect"), this._createSymbol(s, t, e, u, r)) : ((o = this
				.childAt(0)).silent = !1, a = {
				scaleX: u[0] / 2,
				scaleY: u[1] / 2
			}, c ? o.attr(a) : Rh(o, a, l, e), Vh(o)), this._updateCommon(t, e, u, n, i), h && (o = this
				.childAt(0), c || (a = {
					scaleX: this._sizeX,
					scaleY: this._sizeY,
					style: {
						opacity: o.style.opacity
					}
				}, o.scaleX = o.scaleY = 0, o.style.opacity = 0, Nh(o, a, l, e))), c && this.childAt(0)
			.stopAnimation("leave")
	}, pb.prototype._updateCommon = function(e, t, n, i, r) {
		var o, a, s, l, u, h, c, p, d = this.childAt(0),
			f = e.hostModel,
			g = (i && (o = i.emphasisItemStyle, s = i.blurItemStyle, a = i.selectItemStyle, l = i.focus, u = i
				.blurScope, c = i.labelStatesModels, p = i.hoverScale, y = i.cursorStyle, h = i
				.emphasisDisabled), i && !e.hasItemOption || (o = (g = (i = i && i.itemModel ? i.itemModel :
					e.getItemModel(t)).getModel("emphasis")).getModel("itemStyle").getItemStyle(), a = i
				.getModel(["select", "itemStyle"]).getItemStyle(), s = i.getModel(["blur", "itemStyle"])
				.getItemStyle(), l = g.get("focus"), u = g.get("blurScope"), h = g.get("disabled"), c = vc(
					i), p = g.getShallow("scale"), y = i.getShallow("cursor")), e.getItemVisual(t,
				"symbolRotate")),
			i = (d.attr("rotation", (g || 0) * Math.PI / 180 || 0), um(e.getItemVisual(t, "symbolOffset"), n)),
			g = (i && (d.x = i[0], d.y = i[1]), y && d.attr("cursor", y), e.getItemVisual(t, "style")),
			i = g.fill,
			y = (d instanceof Is ? (y = d.style, d.useStyle(P({
				image: y.image,
				x: y.x,
				y: y.y,
				width: y.width,
				height: y.height
			}, g))) : (d.__isEmptyBrush ? d.useStyle(P({}, g)) : d.useStyle(g), d.style.decal = null, d
				.setColor(i, r && r.symbolInnerColor), d.style.strokeNoScale = !0), e.getItemVisual(t,
				"liftZ")),
			m = this._z2,
			v = (null != y ? null == m && (this._z2 = d.z2, d.z2 += y) : null != m && (d.z2 = m, this._z2 =
				null), r && r.useNameLabel);
		mc(d, c, {
			labelFetcher: f,
			labelDataIndex: t,
			defaultText: function(t) {
				return v ? e.getName(t) : Rx(e, t)
			},
			inheritColor: i,
			defaultOpacity: g.opacity
		}), this._sizeX = n[0] / 2, this._sizeY = n[1] / 2;
		y = d.ensureState("emphasis"), y.style = o, d.ensureState("select").style = a, d.ensureState("blur")
			.style = s, m = null == p || !0 === p ? Math.max(1.1, 3 / this._sizeY) : isFinite(p) && 0 < p ? +p :
			1;
		y.scaleX = this._sizeX * m, y.scaleY = this._sizeY * m, this.setSymbolScale(1), Gl(this, l, u, h)
	}, pb.prototype.setSymbolScale = function(t) {
		this.scaleX = this.scaleY = t
	}, pb.prototype.fadeOut = function(t, e, n) {
		var i = this.childAt(0),
			r = k(this).dataIndex,
			o = n && n.animation;
		this.silent = i.silent = !0, n && n.fadeLabel ? (n = i.getTextContent()) && zh(n, {
			style: {
				opacity: 0
			}
		}, e, {
			dataIndex: r,
			removeOpt: o,
			cb: function() {
				i.removeTextContent()
			}
		}) : i.removeTextContent(), zh(i, {
			style: {
				opacity: 0
			},
			scaleX: 0,
			scaleY: 0
		}, e, {
			dataIndex: r,
			cb: t,
			removeOpt: o
		})
	}, pb.getSymbolSize = function(t, e) {
		return lm(t.getItemVisual(e, "symbolSize"))
	};
	var hb, cb = pb;

	function pb(t, e, n, i) {
		var r = hb.call(this) || this;
		return r.updateData(t, e, n, i), r
	}

	function db(t, e) {
		this.parent.drift(t, e)
	}

	function fb(t, e, n, i) {
		return e && !isNaN(e[0]) && !isNaN(e[1]) && (!i.isIgnore || !i.isIgnore(n)) && (!i.clipShape || i.clipShape
			.contain(e[0], e[1])) && "none" !== t.getItemVisual(n, "symbol")
	}

	function gb(t) {
		return (t = null == t || O(t) ? t : {
			isIgnore: t
		}) || {}
	}

	function yb(t) {
		var t = t.hostModel,
			e = t.getModel("emphasis");
		return {
			emphasisItemStyle: e.getModel("itemStyle").getItemStyle(),
			blurItemStyle: t.getModel(["blur", "itemStyle"]).getItemStyle(),
			selectItemStyle: t.getModel(["select", "itemStyle"]).getItemStyle(),
			focus: e.get("focus"),
			blurScope: e.get("blurScope"),
			emphasisDisabled: e.get("disabled"),
			hoverScale: e.get("scale"),
			labelStatesModels: vc(t),
			cursorStyle: t.get("cursor")
		}
	}
	vb.prototype.updateData = function(o, a) {
		this._progressiveEls = null, a = gb(a);
		var s = this.group,
			l = o.hostModel,
			u = this._data,
			h = this._SymbolCtor,
			c = a.disableAnimation,
			p = yb(o),
			d = {
				disableAnimation: c
			},
			f = a.getSymbolPoint || function(t) {
				return o.getItemLayout(t)
			};
		u || s.removeAll(), o.diff(u).add(function(t) {
			var e, n = f(t);
			fb(o, n, t, a) && ((e = new h(o, t, p, d)).setPosition(n), o.setItemGraphicEl(t, e), s.add(
				e))
		}).update(function(t, e) {
			var n, i, e = u.getItemGraphicEl(e),
				r = f(t);
			fb(o, r, t, a) ? (n = o.getItemVisual(t, "symbol") || "circle", i = e && e.getSymbolType &&
				e.getSymbolType(), !e || i && i !== n ? (s.remove(e), (e = new h(o, t, p, d))
					.setPosition(r)) : (e.updateData(o, t, p, d), i = {
					x: r[0],
					y: r[1]
				}, c ? e.attr(i) : Rh(e, i, l)), s.add(e), o.setItemGraphicEl(t, e)) : s.remove(e)
		}).remove(function(t) {
			var e = u.getItemGraphicEl(t);
			e && e.fadeOut(function() {
				s.remove(e)
			}, l)
		}).execute(), this._getSymbolPoint = f, this._data = o
	}, vb.prototype.updateLayout = function() {
		var n = this,
			t = this._data;
		t && t.eachItemGraphicEl(function(t, e) {
			e = n._getSymbolPoint(e);
			t.setPosition(e), t.markRedraw()
		})
	}, vb.prototype.incrementalPrepareUpdate = function(t) {
		this._seriesScope = yb(t), this._data = null, this.group.removeAll()
	}, vb.prototype.incrementalUpdate = function(t, e, n) {
		function i(t) {
			t.isGroup || (t.incremental = !0, t.ensureState("emphasis").hoverLayer = !0)
		}
		this._progressiveEls = [], n = gb(n);
		for (var r = t.start; r < t.end; r++) {
			var o, a = e.getItemLayout(r);
			fb(e, a, r, n) && ((o = new this._SymbolCtor(e, r, this._seriesScope)).traverse(i), o.setPosition(
				a), this.group.add(o), e.setItemGraphicEl(r, o), this._progressiveEls.push(o))
		}
	}, vb.prototype.eachRendered = function(t) {
		pc(this._progressiveEls || this.group, t)
	}, vb.prototype.remove = function(t) {
		var e = this.group,
			n = this._data;
		n && t ? n.eachItemGraphicEl(function(t) {
			t.fadeOut(function() {
				e.remove(t)
			}, n.hostModel)
		}) : e.removeAll()
	};
	var mb = vb;

	function vb(t) {
		this.group = new Ur, this._SymbolCtor = t || cb
	}

	function _b(t, e, n) {
		var i = t.getBaseAxis(),
			r = t.getOtherAxis(i),
			n = function(t, e) {
				var n = 0,
					t = t.scale.getExtent();
				"start" === e ? n = t[0] : "end" === e ? n = t[1] : G(e) && !isNaN(e) ? n = e : 0 < t[0] ? n = t[
					0] : t[1] < 0 && (n = t[1]);
				return n
			}(r, n),
			i = i.dim,
			r = r.dim,
			o = e.mapDimension(r),
			a = e.mapDimension(i),
			s = "x" === r || "radius" === r ? 1 : 0,
			t = B(t.dimensions, function(t) {
				return e.mapDimension(t)
			}),
			l = !1,
			u = e.getCalculationInfo("stackResultDimension");
		return Rv(e, t[0]) && (l = !0, t[0] = u), Rv(e, t[1]) && (l = !0, t[1] = u), {
			dataDimsForPoint: t,
			valueStart: n,
			valueAxisDim: r,
			baseAxisDim: i,
			stacked: !!l,
			valueDim: o,
			baseDim: a,
			baseDataOffset: s,
			stackedOverDimension: e.getCalculationInfo("stackedOverDimension")
		}
	}

	function xb(t, e, n, i) {
		var r = NaN,
			o = (t.stacked && (r = n.get(n.getCalculationInfo("stackedOverDimension"), i)), isNaN(r) && (r = t
				.valueStart), t.baseDataOffset),
			a = [];
		return a[o] = n.get(t.baseDim, i), a[1 - o] = r, e.dataToPoint(a)
	}
	var bb = Math.min,
		wb = Math.max;

	function Sb(t, e) {
		return isNaN(t) || isNaN(e)
	}

	function Mb(t, e, n, i, r, o, a, s, l) {
		for (var u, h, c, p, d = n, f = 0; f < i; f++) {
			var g = e[2 * d],
				y = e[2 * d + 1];
			if (r <= d || d < 0) break;
			if (Sb(g, y)) {
				if (l) {
					d += o;
					continue
				}
				break
			}
			if (d === n) t[0 < o ? "moveTo" : "lineTo"](g, y), c = g, p = y;
			else {
				var m = g - u,
					v = y - h;
				if (m * m + v * v < .5) {
					d += o;
					continue
				}
				if (0 < a) {
					for (var _ = d + o, x = e[2 * _], b = e[2 * _ + 1]; x === g && b === y && f < i;) f++, d += o,
						x = e[2 * (_ += o)], b = e[2 * _ + 1], g = e[2 * d], y = e[2 * d + 1];
					var w = f + 1;
					if (l)
						for (; Sb(x, b) && w < i;) w++, x = e[2 * (_ += o)], b = e[2 * _ + 1];
					var S, M, T, I, C, D, k, A, L, m = 0,
						v = 0,
						P = void 0,
						O = void 0;
					i <= w || Sb(x, b) ? (k = g, A = y) : (m = x - u, v = b - h, S = g - u, M = x - g, T = y - h,
							I = b - y, D = C = void 0, O = "x" === s ? (k = g - (L = 0 < m ? 1 : -1) * (C = Math
								.abs(S)) * a, A = y, P = g + L * (D = Math.abs(M)) * a, y) : "y" === s ? (A = y - (
								L = 0 < v ? 1 : -1) * (C = Math.abs(T)) * a, P = k = g, y + L * (D = Math.abs(
								I)) * a) : (C = Math.sqrt(S * S + T * T), k = g - m * a * (1 - (S = (D = Math.sqrt(
									M * M + I * I)) / (D + C))), A = y - v * a * (1 - S), O = y + v * a * S, P = bb(
									P = g + m * a * S, wb(x, g)), O = bb(O, wb(b, y)), P = wb(P, bb(x, g)), A = y -
								(v = (O = wb(O, bb(b, y))) - y) * C / D, k = bb(k = g - (m = P - g) * C / D, wb(u,
									g)), A = bb(A, wb(h, y)), P = g + (m = g - (k = wb(k, bb(u, g)))) * D / C, y + (
									v = y - (A = wb(A, bb(h, y)))) * D / C)), t.bezierCurveTo(c, p, k, A, g, y), c =
						P, p = O
				} else t.lineTo(g, y)
			}
			u = g, h = y, d += o
		}
		return f
	}
	var Tb, Ib = function() {
			this.smooth = 0, this.smoothConstraint = !0
		},
		Cb = (u(Db, Tb = j), Db.prototype.getDefaultStyle = function() {
			return {
				stroke: "#000",
				fill: null
			}
		}, Db.prototype.getDefaultShape = function() {
			return new Ib
		}, Db.prototype.buildPath = function(t, e) {
			var n = e.points,
				i = 0,
				r = n.length / 2;
			if (e.connectNulls) {
				for (; 0 < r && Sb(n[2 * r - 2], n[2 * r - 1]); r--);
				for (; i < r && Sb(n[2 * i], n[2 * i + 1]); i++);
			}
			for (; i < r;) i += Mb(t, n, i, r, r, 1, e.smooth, e.smoothMonotone, e.connectNulls) + 1
		}, Db.prototype.getPointOn = function(t, e) {
			this.path || (this.createPathProxy(), this.buildPath(this.path, this.shape));
			for (var n, i, r = this.path.data, o = es.CMD, a = "x" === e, s = [], l = 0; l < r.length;) {
				var u = void 0,
					h = void 0;
				switch (r[l++]) {
					case o.M:
						n = r[l++], i = r[l++];
						break;
					case o.L:
						var c, u = r[l++],
							h = r[l++];
						if ((c = a ? (t - n) / (u - n) : (t - i) / (h - i)) <= 1 && 0 <= c) return v = a ? (h -
							i) * c + i : (u - n) * c + n, a ? [t, v] : [v, t];
						n = u, i = h;
						break;
					case o.C:
						u = r[l++], h = r[l++];
						var p = r[l++],
							d = r[l++],
							f = r[l++],
							g = r[l++],
							y = a ? Vn(n, u, p, f, t, s) : Vn(i, h, d, g, t, s);
						if (0 < y)
							for (var m = 0; m < y; m++) {
								var v, _ = s[m];
								if (_ <= 1 && 0 <= _) return v = a ? Bn(i, h, d, g, _) : Bn(n, u, p, f, _), a ?
									[t, v] : [v, t]
							}
						n = f, i = g
				}
			}
		}, Db);

	function Db(t) {
		t = Tb.call(this, t) || this;
		return t.type = "ec-polyline", t
	}
	u(Lb, kb = Ib);
	var kb, Ab = Lb;

	function Lb() {
		return null !== kb && kb.apply(this, arguments) || this
	}
	u(Rb, Pb = j), Rb.prototype.getDefaultShape = function() {
		return new Ab
	}, Rb.prototype.buildPath = function(t, e) {
		var n = e.points,
			i = e.stackedOnPoints,
			r = 0,
			o = n.length / 2,
			a = e.smoothMonotone;
		if (e.connectNulls) {
			for (; 0 < o && Sb(n[2 * o - 2], n[2 * o - 1]); o--);
			for (; r < o && Sb(n[2 * r], n[2 * r + 1]); r++);
		}
		for (; r < o;) {
			var s = Mb(t, n, r, o, o, 1, e.smooth, a, e.connectNulls);
			Mb(t, i, r + s - 1, s, o, -1, e.stackedOnSmooth, a, e.connectNulls), r += s + 1, t.closePath()
		}
	};
	var Pb, Ob = Rb;

	function Rb(t) {
		t = Pb.call(this, t) || this;
		return t.type = "ec-polygon", t
	}

	function Nb(t, e) {
		if (t.length === e.length) {
			for (var n = 0; n < t.length; n++)
				if (t[n] !== e[n]) return;
			return 1
		}
	}

	function Eb(t) {
		for (var e = 1 / 0, n = 1 / 0, i = -1 / 0, r = -1 / 0, o = 0; o < t.length;) {
			var a = t[o++],
				s = t[o++];
			isNaN(a) || (e = Math.min(a, e), i = Math.max(a, i)), isNaN(s) || (n = Math.min(s, n), r = Math.max(s,
				r))
		}
		return [
			[e, n],
			[i, r]
		]
	}

	function zb(t, e) {
		var t = Eb(t),
			n = t[0],
			t = t[1],
			e = Eb(e),
			i = e[0],
			e = e[1];
		return Math.max(Math.abs(n[0] - i[0]), Math.abs(n[1] - i[1]), Math.abs(t[0] - e[0]), Math.abs(t[1] - e[1]))
	}

	function Bb(t) {
		return G(t) ? t : t ? .5 : 0
	}

	function Fb(t, e, n, i) {
		var e = e.getBaseAxis(),
			r = "x" === e.dim || "radius" === e.dim ? 0 : 1,
			o = [],
			a = 0,
			s = [],
			l = [],
			u = [],
			h = [];
		if (i) {
			for (a = 0; a < t.length; a += 2) isNaN(t[a]) || isNaN(t[a + 1]) || h.push(t[a], t[a + 1]);
			t = h
		}
		for (a = 0; a < t.length - 2; a += 2) switch (u[0] = t[a + 2], u[1] = t[a + 3], l[0] = t[a], l[1] = t[a +
			1], o.push(l[0], l[1]), n) {
			case "end":
				s[r] = u[r], s[1 - r] = l[1 - r], o.push(s[0], s[1]);
				break;
			case "middle":
				var c = [];
				s[r] = c[r] = (l[r] + u[r]) / 2, s[1 - r] = l[1 - r], c[1 - r] = u[1 - r], o.push(s[0], s[1]), o
					.push(c[0], c[1]);
				break;
			default:
				s[r] = l[r], s[1 - r] = u[1 - r], o.push(s[0], s[1])
		}
		return o.push(t[a++], t[a++]), o
	}

	function Vb(t, e, n) {
		var i = t.getVisual("visualMeta");
		if (i && i.length && t.count() && "cartesian2d" === e.type) {
			for (var r, o = i.length - 1; 0 <= o; o--) {
				var a, s = t.getDimensionInfo(i[o].dimension);
				if ("x" === (a = s && s.coordDim) || "y" === a) {
					r = i[o];
					break
				}
			}
			if (r) {
				var l = e.getAxis(a),
					e = B(r.stops, function(t) {
						return {
							coord: l.toGlobalCoord(l.dataToCoord(t.value)),
							color: t.color
						}
					}),
					u = e.length,
					h = r.outerColors.slice(),
					n = (u && e[0].coord > e[u - 1].coord && (e.reverse(), h.reverse()), function(t, e) {
						var n, i, r = [],
							o = t.length;

						function a(t, e, n) {
							var i = t.coord;
							return {
								coord: n,
								color: bi((n - i) / (e.coord - i), [t.color, e.color])
							}
						}
						for (var s = 0; s < o; s++) {
							var l = t[s],
								u = l.coord;
							if (u < 0) n = l;
							else {
								if (e < u) {
									i ? r.push(a(i, l, e)) : n && r.push(a(n, l, 0), a(n, l, e));
									break
								}
								n && (r.push(a(n, l, 0)), n = null), r.push(l), i = l
							}
						}
						return r
					}(e, "x" === a ? n.getWidth() : n.getHeight())),
					c = n.length;
				if (!c && u) return e[0].coord < 0 ? h[1] || e[u - 1].color : h[0] || e[0].color;
				var p = n[0].coord - 10,
					u = n[c - 1].coord + 10,
					d = u - p;
				if (d < .001) return "transparent";
				E(n, function(t) {
					t.offset = (t.coord - p) / d
				}), n.push({
					offset: c ? n[c - 1].offset : .5,
					color: h[1] || "transparent"
				}), n.unshift({
					offset: c ? n[0].offset : .5,
					color: h[0] || "transparent"
				});
				e = new _h(0, 0, 0, 0, n, !0);
				return e[a] = p, e[a + "2"] = u, e
			}
		}
	}

	function Gb(t, e, n) {
		var t = t.get("showAllSymbol"),
			i = "auto" === t;
		if (!t || i) {
			var r, o, a = n.getAxesByScale("ordinal")[0];
			if (a)
				if (!i || ! function(t, e) {
						for (var n = t.getExtent(), i = Math.abs(n[1] - n[0]) / t.scale.count(), r = (isNaN(i) && (
								i = 0), e.count()), o = Math.max(1, Math.round(r / 5)), a = 0; a < r; a += o)
							if (1.5 * cb.getSymbolSize(e, a)[t.isHorizontal() ? 1 : 0] > i) return;
						return 1
					}(a, e)) return r = e.mapDimension(a.dim), o = {}, E(a.getViewLabels(), function(t) {
						t = a.scale.getRawOrdinalNumber(t.tickValue);
						o[t] = 1
					}),
					function(t) {
						return !o.hasOwnProperty(e.get(r, t))
					}
		}
	}

	function Hb(t) {
		for (var e, n, i = t.length / 2; 0 < i && (e = t[2 * i - 2], n = t[2 * i - 1], isNaN(e) || isNaN(n)); i--);
		return i - 1
	}

	function Wb(t, e) {
		return [t[2 * e], t[2 * e + 1]]
	}

	function Ub(t) {
		if (t.get(["endLabel", "show"])) return 1;
		for (var e = 0; e < ol.length; e++)
			if (t.get([ol[e], "endLabel", "show"])) return 1
	}

	function Xb(n, i, e, t) {
		var r, o, a, s, l, u, h, c, p;
		return Ox(i, "cartesian2d") ? (r = t.getModel("endLabel"), o = r.get("valueAnimation"), a = t.getData(),
		s = {
			lastFrameIndex: 0
		}, l = Ub(t) ? function(t, e) {
			n._endLabelOnDuring(t, e, a, s, o, r, i)
		} : null, u = i.getBaseAxis().isHorizontal(), h = Cx(i, e, t, function() {
			var t = n._endLabel;
			t && e && null != s.originalX && t.attr({
				x: s.originalX,
				y: s.originalY
			})
		}, l), t.get("clip", !0) || (c = h.shape, p = Math.max(c.width, c.height), u ? (c.y -= p, c
			.height += 2 * p) : (c.x -= p, c.width += 2 * p)), l && l(1, h), h) : Dx(i, e, t)
	}
	u(Zb, Yb = iy), Zb.prototype.init = function() {
		var t = new Ur,
			e = new mb;
		this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t
	}, Zb.prototype.render = function(t, e, n) {
		function i(t) {
			o._changePolyState(t)
		}
		var r, o = this,
			a = t.coordinateSystem,
			s = this.group,
			l = t.getData(),
			u = t.getModel("lineStyle"),
			h = t.getModel("areaStyle"),
			c = l.getLayout("points") || [],
			p = "polar" === a.type,
			d = this._coordSys,
			f = this._symbolDraw,
			g = this._polyline,
			y = this._polygon,
			m = this._lineGroup,
			e = !e.ssr && t.get("animation"),
			v = !h.isEmpty(),
			_ = h.get("origin"),
			x = _b(a, l, _),
			x = v && function(t, e, n) {
				if (!n.valueDim) return [];
				for (var i = e.count(), r = a_(2 * i), o = 0; o < i; o++) {
					var a = xb(n, t, e, o);
					r[2 * o] = a[0], r[2 * o + 1] = a[1]
				}
				return r
			}(a, l, x),
			b = t.get("showSymbol"),
			w = t.get("connectNulls"),
			S = b && !p && Gb(t, l, a),
			M = this._data,
			T = (M && M.eachItemGraphicEl(function(t, e) {
				t.__temp && (s.remove(t), M.setItemGraphicEl(e, null))
			}), b || f.remove(), s.add(m), !p && t.get("step")),
			I = (a && a.getArea && t.get("clip", !0) && (null != (r = a.getArea()).width ? (r.x -= .1, r.y -=
					.1, r.width += .2, r.height += .2) : r.r0 && (r.r0 -= .5, r.r += .5)), this
				._clipShapeForSymbol = r, Vb(l, a, n) || l.getVisual("style")[l.getVisual("drawType")]),
			d = (g && d.type === a.type && T === this._step ? (v && !y ? y = this._newPolygon(c, x) : y && !v &&
				(m.remove(y), y = this._polygon = null), p || this._initOrUpdateEndLabel(t, a, Op(I)), (d =
					m.getClipPath()) ? Nh(d, {
					shape: Xb(this, a, !1, t).shape
				}, t) : m.setClipPath(Xb(this, a, !0, t)), b && f.updateData(l, {
					isIgnore: S,
					clipShape: r,
					disableAnimation: !0,
					getSymbolPoint: function(t) {
						return [c[2 * t], c[2 * t + 1]]
					}
				}), Nb(this._stackedOnPoints, x) && Nb(this._points, c) || (e ? this._doUpdateAnimation(l,
					x, a, n, T, _, w) : (T && (c = Fb(c, a, T, w), x = x && Fb(x, a, T, w)), g
			.setShape({
					points: c
				}), y && y.setShape({
					points: c,
					stackedOnPoints: x
				})))) : (b && f.updateData(l, {
				isIgnore: S,
				clipShape: r,
				disableAnimation: !0,
				getSymbolPoint: function(t) {
					return [c[2 * t], c[2 * t + 1]]
				}
			}), e && this._initSymbolLabelAnimation(l, a, r), T && (c = Fb(c, a, T, w), x = x && Fb(x,
				a, T, w)), g = this._newPolyline(c), v ? y = this._newPolygon(c, x) : y && (m.remove(y),
				y = this._polygon = null), p || this._initOrUpdateEndLabel(t, a, Op(I)), m.setClipPath(
				Xb(this, a, !0, t))), t.getModel("emphasis")),
			n = d.get("focus"),
			b = d.get("blurScope"),
			f = d.get("disabled"),
			S = (g.useStyle(z(u.getLineStyle(), {
					fill: "none",
					stroke: I,
					lineJoin: "bevel"
				})), Ul(g, t, "lineStyle"), 0 < g.style.lineWidth && "bolder" === t.get(["emphasis",
					"lineStyle", "width"
				]) && (g.getState("emphasis").style.lineWidth = +g.style.lineWidth + 1), k(g).seriesIndex = t
				.seriesIndex, Gl(g, n, b, f), Bb(t.get("smooth"))),
			e = t.get("smoothMonotone");
		g.setShape({
			smooth: S,
			smoothMonotone: e,
			connectNulls: w
		}), y && (r = l.getCalculationInfo("stackedOnSeries"), v = 0, y.useStyle(z(h.getAreaStyle(), {
			fill: I,
			opacity: .7,
			lineJoin: "bevel",
			decal: l.getVisual("style").decal
		})), r && (v = Bb(r.get("smooth"))), y.setShape({
			smooth: S,
			stackedOnSmooth: v,
			smoothMonotone: e,
			connectNulls: w
		}), Ul(y, t, "areaStyle"), k(y).seriesIndex = t.seriesIndex, Gl(y, n, b, f));
		l.eachItemGraphicEl(function(t) {
				t && (t.onHoverStateChange = i)
			}), this._polyline.onHoverStateChange = i, this._data = l, this._coordSys = a, this
			._stackedOnPoints = x, this._points = c, this._step = T, this._valueOrigin = _, t.get(
				"triggerLineEvent") && (this.packEventData(t, g), y) && this.packEventData(t, y)
	}, Zb.prototype.packEventData = function(t, e) {
		k(e).eventData = {
			componentType: "series",
			componentSubType: "line",
			componentIndex: t.componentIndex,
			seriesIndex: t.seriesIndex,
			seriesName: t.name,
			seriesType: "line"
		}
	}, Zb.prototype.highlight = function(t, e, n, i) {
		var r = t.getData(),
			o = Ro(r, i);
		if (this._changePolyState("emphasis"), !(o instanceof Array) && null != o && 0 <= o) {
			var a = r.getLayout("points");
			if (!(l = r.getItemGraphicEl(o))) {
				var s = a[2 * o],
					a = a[2 * o + 1];
				if (isNaN(s) || isNaN(a)) return;
				if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(s, a)) return;
				var l, u = t.get("zlevel") || 0,
					h = t.get("z") || 0,
					s = ((l = new cb(r, o)).x = s, l.y = a, l.setZ(u, h), l.getSymbolPath().getTextContent());
				s && (s.zlevel = u, s.z = h, s.z2 = this._polyline.z2 + 1), l.__temp = !0, r.setItemGraphicEl(o,
					l), l.stopSymbolAnimation(!0), this.group.add(l)
			}
			l.highlight()
		} else iy.prototype.highlight.call(this, t, e, n, i)
	}, Zb.prototype.downplay = function(t, e, n, i) {
		var r, o = t.getData(),
			a = Ro(o, i);
		this._changePolyState("normal"), null != a && 0 <= a ? (r = o.getItemGraphicEl(a)) && (r.__temp ? (o
			.setItemGraphicEl(a, null), this.group.remove(r)) : r.downplay()) : iy.prototype.downplay.call(
			this, t, e, n, i)
	}, Zb.prototype._changePolyState = function(t) {
		var e = this._polygon;
		wl(this._polyline, t), e && wl(e, t)
	}, Zb.prototype._newPolyline = function(t) {
		var e = this._polyline;
		return e && this._lineGroup.remove(e), e = new Cb({
			shape: {
				points: t
			},
			segmentIgnoreThreshold: 2,
			z2: 10
		}), this._lineGroup.add(e), this._polyline = e
	}, Zb.prototype._newPolygon = function(t, e) {
		var n = this._polygon;
		return n && this._lineGroup.remove(n), n = new Ob({
			shape: {
				points: t,
				stackedOnPoints: e
			},
			segmentIgnoreThreshold: 2
		}), this._lineGroup.add(n), this._polygon = n
	}, Zb.prototype._initSymbolLabelAnimation = function(t, l, u) {
		var h, c, e = l.getBaseAxis(),
			p = e.inverse,
			e = ("cartesian2d" === l.type ? (h = e.isHorizontal(), c = !1) : "polar" === l.type && (h =
				"angle" === e.dim, c = !0), t.hostModel),
			d = e.get("animationDuration"),
			f = (D(d) && (d = d(null)), e.get("animationDelay") || 0),
			g = D(f) ? f(null) : f;
		t.eachItemGraphicEl(function(t, e) {
			var n, i, r, o, a, s = t;
			s && (o = [t.x, t.y], a = i = n = void 0, u && (a = c ? (r = u, o = l.pointToCoord(o), h ? (
					n = r.startAngle, i = r.endAngle, -o[1] / 180 * Math.PI) : (n = r.r0,
					i = r.r, o[0])) : h ? (n = u.x, i = u.x + u.width, t.x) : (n = u.y + u
					.height, i = u.y, t.y)), r = i === n ? 0 : (a - n) / (i - n), p && (r = 1 - r),
				o = D(f) ? f(e) : d * r + g, a = (t = s.getSymbolPath()).getTextContent(), s.attr({
					scaleX: 0,
					scaleY: 0
				}), s.animateTo({
					scaleX: 1,
					scaleY: 1
				}, {
					duration: 200,
					setToFinal: !0,
					delay: o
				}), a && a.animateFrom({
					style: {
						opacity: 0
					}
				}, {
					duration: 300,
					delay: o
				}), t.disableLabelAnimation = !0)
		})
	}, Zb.prototype._initOrUpdateEndLabel = function(t, e, n) {
		var i, r, o, a = t.getModel("endLabel");
		Ub(t) ? (i = t.getData(), r = this._polyline, (o = i.getLayout("points")) ? (this._endLabel || ((this
					._endLabel = new Vs({
						z2: 200
					})).ignoreClip = !0, r.setTextContent(this._endLabel), r.disableLabelAnimation = !0),
				0 <= (o = Hb(o)) && (mc(r, vc(t, "endLabel"), {
					inheritColor: n,
					labelFetcher: t,
					labelDataIndex: o,
					defaultText: function(t, e, n) {
						return null != n ? Nx(i, n) : Rx(i, t)
					},
					enableTextSetter: !0
				}, (n = a, o = (t = (t = e).getBaseAxis()).isHorizontal(), t = t.inverse, a = o ?
					t ? "right" : "left" : "center", o = o ? "middle" : t ? "top" : "bottom", {
						normal: {
							align: n.get("align") || a,
							verticalAlign: n.get("verticalAlign") || o
						}
					})), r.textConfig.position = null)) : (r.removeTextContent(), this._endLabel = null)) : this
			._endLabel && (this._polyline.removeTextContent(), this._endLabel = null)
	}, Zb.prototype._endLabelOnDuring = function(t, e, n, i, r, o, a) {
		var s, l, u, h, c, p, d, f, g, y, m = this._endLabel,
			v = this._polyline;
		m && (t < 1 && null == i.originalX && (i.originalX = m.x, i.originalY = m.y), s = n.getLayout("points"),
			g = (l = n.hostModel).get("connectNulls"), u = o.get("precision"), o = o.get("distance") || 0,
			c = (a = a.getBaseAxis()).isHorizontal(), a = a.inverse, e = e.shape, h = (c ? o : 0) * (a ? -
				1 : 1), o = (c ? 0 : -o) * (a ? -1 : 1), d = void 0, 1 <= (f = (p = (c = function(t, e, n) {
					for (var i, r, o = t.length / 2, a = "x" === n ? 0 : 1, s = 0, l = -1, u =
						0; u < o; u++)
						if (r = t[2 * u + a], !isNaN(r) && !isNaN(t[2 * u + 1 - a])) {
							if (0 !== u) {
								if (i <= e && e <= r || e <= i && r <= e) {
									l = u;
									break
								}
								s = u
							}
							i = r
						} return {
						range: [s, l],
						t: (e - i) / (r - i)
					}
				}(s, a = a ? c ? e.x : e.y + e.height : c ? e.x + e.width : e.y, e = c ? "x" : "y"))
				.range)[1] - p[0]) ? (1 < f && !g ? (y = Wb(s, p[0]), m.attr({
					x: y[0] + h,
					y: y[1] + o
				}), r && (d = l.getRawValue(p[0]))) : ((y = v.getPointOn(a, e)) && m.attr({
					x: y[0] + h,
					y: y[1] + o
				}), f = l.getRawValue(p[0]), g = l.getRawValue(p[1]), r && (d = Ho(n, u, f, g, c.t))), i
				.lastFrameIndex = p[0]) : (y = Wb(s, v = 1 === t || 0 < i.lastFrameIndex ? p[0] : 0), r && (
				d = l.getRawValue(v)), m.attr({
				x: y[0] + h,
				y: y[1] + o
			})), r) && "function" == typeof(a = Tc(m)).setLabelText && a.setLabelText(d)
	}, Zb.prototype._doUpdateAnimation = function(t, e, n, i, r, o, a) {
		var s = this._polyline,
			l = this._polygon,
			u = t.hostModel,
			e = function(t, e, n, i, r, o) {
				a = [], e.diff(t).add(function(t) {
					a.push({
						cmd: "+",
						idx: t
					})
				}).update(function(t, e) {
					a.push({
						cmd: "=",
						idx: e,
						idx1: t
					})
				}).remove(function(t) {
					a.push({
						cmd: "-",
						idx: t
					})
				}).execute();
				for (var a, s = a, l = [], u = [], h = [], c = [], p = [], d = [], f = [], g = _b(r, e, o), y =
						t.getLayout("points") || [], m = e.getLayout("points") || [], v = 0; v < s
					.length; v++) {
					var _ = s[v],
						x = !0,
						b = void 0;
					switch (_.cmd) {
						case "=":
							var w = 2 * _.idx,
								b = 2 * _.idx1,
								S = y[w],
								M = y[1 + w],
								T = m[b],
								I = m[b + 1];
							(isNaN(S) || isNaN(M)) && (S = T, M = I), l.push(S, M), u.push(T, I), h.push(n[w],
								n[1 + w]), c.push(i[b], i[b + 1]), f.push(e.getRawIndex(_.idx1));
							break;
						case "+":
							S = _.idx, M = g.dataDimsForPoint, T = r.dataToPoint([e.get(M[0], S), e.get(M[1],
								S)]), I = (b = 2 * S, l.push(T[0], T[1]), u.push(m[b], m[b + 1]), xb(g, r,
								e, S));
							h.push(I[0], I[1]), c.push(i[b], i[b + 1]), f.push(e.getRawIndex(S));
							break;
						case "-":
							x = !1
					}
					x && (p.push(_), d.push(d.length))
				}
				d.sort(function(t, e) {
					return f[t] - f[e]
				});
				for (var C = a_(o = l.length), D = a_(o), k = a_(o), A = a_(o), L = [], v = 0; v < d
					.length; v++) {
					var P = d[v],
						O = 2 * v,
						R = 2 * P;
					C[O] = l[R], C[1 + O] = l[1 + R], D[O] = u[R], D[1 + O] = u[1 + R], k[O] = h[R], k[1 + O] =
						h[1 + R], A[O] = c[R], A[1 + O] = c[1 + R], L[v] = p[P]
				}
				return {
					current: C,
					next: D,
					stackedOnCurrent: k,
					stackedOnNext: A,
					status: L
				}
			}(this._data, t, this._stackedOnPoints, e, this._coordSys, this._valueOrigin),
			h = e.current,
			c = e.stackedOnCurrent,
			p = e.next,
			d = e.stackedOnNext;
		if (r && (h = Fb(e.current, n, r, a), c = Fb(e.stackedOnCurrent, n, r, a), p = Fb(e.next, n, r, a), d =
				Fb(e.stackedOnNext, n, r, a)), 3e3 < zb(h, p) || l && 3e3 < zb(c, d)) s.stopAnimation(), s
			.setShape({
				points: p
			}), l && (l.stopAnimation(), l.setShape({
				points: p,
				stackedOnPoints: d
			}));
		else {
			s.shape.__points = e.current, s.shape.points = h;
			for (var f, n = {
						shape: {
							points: p
						}
					}, g = (e.current !== h && (n.shape.__points = e.next), s.stopAnimation(), Rh(s, n, u), l &&
						(l.setShape({
							points: h,
							stackedOnPoints: c
						}), l.stopAnimation(), Rh(l, {
							shape: {
								stackedOnPoints: d
							}
						}, u), s.shape.points !== l.shape.points) && (l.shape.points = s.shape.points), []), y =
					e.status, m = 0; m < y.length; m++) "=" === y[m].cmd && (f = t.getItemGraphicEl(y[m]
				.idx1)) && g.push({
					el: f,
					ptIdx: m
				});
			s.animators && s.animators.length && s.animators[0].during(function() {
				l && l.dirtyShape();
				for (var t = s.shape.__points, e = 0; e < g.length; e++) {
					var n = g[e].el,
						i = 2 * g[e].ptIdx;
					n.x = t[i], n.y = t[1 + i], n.markRedraw()
				}
			})
		}
	}, Zb.prototype.remove = function(t) {
		var n = this.group,
			i = this._data;
		this._lineGroup.removeAll(), this._symbolDraw.remove(!0), i && i.eachItemGraphicEl(function(t, e) {
				t.__temp && (n.remove(t), i.setItemGraphicEl(e, null))
			}), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this
			._endLabel = this._data = null
	}, Zb.type = "line";
	var Yb, qb = Zb;

	function Zb() {
		return null !== Yb && Yb.apply(this, arguments) || this
	}
	Z_(function(t) {
		var i;
		t.registerChartView(qb), t.registerSeriesModel(lb), t.registerLayout((i = !0, {
			seriesType: "line",
			plan: ty(),
			reset: function(t) {
				var h, e, c, p, d, n = t.getData(),
					f = t.coordinateSystem,
					t = t.pipelineContext,
					g = i || t.large;
				if (f) return t = B(f.dimensions, function(t) {
						return n.mapDimension(t)
					}).slice(0, 2), h = t.length, e = n.getCalculationInfo(
						"stackResultDimension"), Rv(n, t[0]) && (t[0] = e), Rv(n, t[
					1]) && (t[1] = e), c = n.getStore(), p = n.getDimensionIndex(t[0]),
					d = n.getDimensionIndex(t[1]), h && {
						progress: function(t, e) {
							for (var n = t.end - t.start, i = g && a_(n * h),
								r = [], o = [], a = t.start, s = 0; a < t
								.end; a++) {
								var l, u = void 0;
								u = 1 === h ? (l = c.get(p, a), f.dataToPoint(l,
										null, o)) : (r[0] = c.get(p, a), r[1] = c
										.get(d, a), f.dataToPoint(r, null, o)), g ?
									(i[s++] = u[0], i[s++] = u[1]) : e
									.setItemLayout(a, u.slice())
							}
							g && e.setLayout("points", i)
						}
					}
			}
		})), t.registerVisual({
			seriesType: "line",
			reset: function(t) {
				var e = t.getData(),
					t = t.getModel("lineStyle").getLineStyle();
				t && !t.stroke && (t.stroke = e.getVisual("style").fill), e.setVisual(
					"legendLineStyle", t)
			}
		}), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, xx("line"))
	});
	var jb = 2 * Math.PI,
		Kb = Math.PI / 180;

	function $b(t, e) {
		return Vp(t.getBoxLayoutParams(), {
			width: e.getWidth(),
			height: e.getHeight()
		})
	}

	function Qb(t, e) {
		var n, i = $b(t, e),
			r = t.get("center"),
			o = t.get("radius"),
			a = (F(o) || (o = [0, o]), W(i.width, e.getWidth())),
			e = W(i.height, e.getHeight()),
			s = Math.min(a, e),
			l = W(o[0], s / 2),
			o = W(o[1], s / 2),
			s = t.coordinateSystem;
		return s = s ? (n = (t = s.dataToPoint(r))[0] || 0, t[1] || 0) : (n = W((r = F(r) ? r : [r, r])[0], a) + i
			.x, W(r[1], e) + i.y), {
			cx: n,
			cy: s,
			r0: l,
			r: o
		}
	}

	function Jb(t, e, I) {
		e.eachSeriesByType(t, function(t) {
			var r, a = t.getData(),
				e = a.mapDimension("value"),
				n = $b(t, I),
				i = Qb(t, I),
				s = i.cx,
				l = i.cy,
				u = i.r,
				h = i.r0,
				o = -t.get("startAngle") * Kb,
				i = t.get("endAngle"),
				c = t.get("padAngle") * Kb,
				i = "auto" === i ? o - jb : -i * Kb,
				p = t.get("minAngle") * Kb + c,
				d = 0,
				f = (a.each(e, function(t) {
					isNaN(t) || d++
				}), a.getSum(e)),
				g = Math.PI / (f || d) * 2,
				y = t.get("clockwise"),
				m = t.get("roseType"),
				v = t.get("stillShowZeroSum"),
				_ = a.getDataExtent(e),
				x = (_[0] = 0, y ? 1 : -1),
				t = [o, i],
				b = x * c / 2,
				w = (ts(t, !y), o = t[0], Math.abs(t[1] - o)),
				S = w,
				M = 0,
				T = o;
			a.setLayout({
				viewRect: n,
				r: u
			}), a.each(e, function(t, e) {
				var n, i, r, o;
				isNaN(t) ? a.setItemLayout(e, {
					angle: NaN,
					startAngle: NaN,
					endAngle: NaN,
					clockwise: y,
					cx: s,
					cy: l,
					r0: h,
					r: m ? NaN : u
				}) : ((n = "area" !== m ? 0 === f && v ? g : t * g : w / d) < p ? S -= n = p :
					M += t, i = T + x * n, o = r = 0, o = n < c ? r = T + x * n / 2 : (r = T +
						b, i - b), a.setItemLayout(e, {
						angle: n,
						startAngle: r,
						endAngle: o,
						clockwise: y,
						cx: s,
						cy: l,
						r0: h,
						r: m ? no(t, _, [h, u]) : u
					}), T = i)
			}), S < jb && d && (S <= .001 ? (r = w / d, a.each(e, function(t, e) {
				var n, i;
				isNaN(t) || (i = t = 0, i = ((n = a.getItemLayout(e)).angle = r) < c ? t =
					o + x * (e + .5) * r : (t = o + x * e * r + b, o + x * (e + 1) * r -
						b), n.startAngle = t, n.endAngle = i)
			})) : (g = S / M, T = o, a.each(e, function(t, e) {
				var n, i;
				isNaN(t) || (i = n = 0, i = (t = (e = a.getItemLayout(e)).angle === p ? p :
						t * g) < c ? n = T + x * t / 2 : (n = T + b, T + x * t - b), e
					.startAngle = n, e.endAngle = i, T += x * t)
			})))
		})
	}
	var tw = Math.PI / 180;

	function ew(t, s, l, u, h, e, n, i, r, o) {
		if (!(t.length < 2)) {
			for (var a, c = t.length, p = 0; p < c; p++) "outer" === t[p].position && "labelLine" === t[p]
				.labelAlignTo && (a = t[p].label.x - o, t[p].linePoints[1][0] += a, t[p].label.x = o);
			if (Y1(t, r, r + n)) {
				for (var d, f, g, y, m, v = t, _ = {
						list: [],
						maxY: 0
					}, x = {
						list: [],
						maxY: 0
					}, b = 0; b < v.length; b++) "none" === v[b].labelAlignTo && (f = (d = v[b]).label.y > l ? x :
					_, (g = Math.abs(d.label.y - l)) >= f.maxY && (m = d.label.x - s - d.len2 * h, y = u + d
						.len, m = Math.abs(m) < y ? Math.sqrt(g * g / (1 - m * m / y / y)) : y, f.rB = m, f
						.maxY = g), f.list.push(d));
				w(_), w(x)
			}
		}

		function w(t) {
			for (var e = t.rB, n = e * e, i = 0; i < t.list.length; i++) {
				var r = t.list[i],
					o = Math.abs(r.label.y - l),
					a = u + r.len,
					a = a * a,
					o = Math.sqrt((1 - Math.abs(o * o / n)) * a),
					a = s + (o + r.len2) * h,
					o = a - r.label.x;
				nw(r, r.targetTextWidth - o * h, !0), r.label.x = a
			}
		}
	}

	function nw(t, e, n) {
		var i, r, o, a, s, l, u;
		void 0 === n && (n = !1), null == t.labelStyleWidth && (s = (i = t.label).style, r = t.rect, l = s
			.backgroundColor, u = (u = s.padding) ? u[1] + u[3] : 0, s = s.overflow, e < (o = r.width + (l ? 0 :
				u)) || n) && (a = r.height, s && s.match("break") ? (i.setStyle("backgroundColor", null), i
				.setStyle("width", e - u), s = i.getBoundingRect(), i.setStyle("width", Math.ceil(s.width)), i
				.setStyle("backgroundColor", l)) : (s = e - u, l = !(e < o) && (!n || s > t
				.unconstrainedWidth) ? null : s, i.setStyle("width", l)), u = i.getBoundingRect(), r.width = u
			.width, e = (i.style.margin || 0) + 2.1, r.height = u.height + e, r.y -= (r.height - a) / 2)
	}

	function iw(t) {
		return "center" === t.position
	}

	function rw(t) {
		var S, M, T = t.getData(),
			I = [],
			C = !1,
			D = (t.get("minShowLabelAngle") || 0) * tw,
			e = T.getLayout("viewRect"),
			k = T.getLayout("r"),
			A = e.width,
			L = e.x,
			n = e.y,
			e = e.height;

		function P(t) {
			t.ignore = !0
		}
		if (T.each(function(t) {
				var e, n, i, r, o, a, s, l, u, h, c = T.getItemGraphicEl(t),
					p = c.shape,
					d = c.getTextContent(),
					f = c.getTextGuideLine(),
					t = T.getItemModel(t),
					g = t.getModel("label"),
					y = g.get("position") || t.get(["emphasis", "label", "position"]),
					m = g.get("distanceToLabelLine"),
					v = g.get("alignTo"),
					_ = W(g.get("edgeDistance"), A),
					x = g.get("bleedMargin"),
					t = t.getModel("labelLine"),
					b = W(t.get("length"), A),
					w = W(t.get("length2"), A);
				Math.abs(p.endAngle - p.startAngle) < D ? (E(d.states, P), d.ignore = !0, f && (E(f.states, P),
					f.ignore = !0)) : function(t) {
					if (!t.ignore) return 1;
					for (var e in t.states)
						if (!1 === t.states[e].ignore) return 1
				}(d) && (h = (p.startAngle + p.endAngle) / 2, e = Math.cos(h), n = Math.sin(h), S = p.cx,
					M = p.cy, i = "inside" === y || "inner" === y, s = "center" === y ? (r = p.cx, o = p.cy,
						"center") : (r = (s = (i ? (p.r + p.r0) / 2 * e : p.r * e) + S) + 3 * e, o = (l = (
							i ? (p.r + p.r0) / 2 * n : p.r * n) + M) + 3 * n, i || (a = s + e * (b + k - p
								.r), p = l + n * (b + k - p.r), u = a + (e < 0 ? -1 : 1) * w, r = "edge" ===
							v ? e < 0 ? L + _ : L + A - _ : u + (e < 0 ? -m : m), a = [
								[s, l],
								[a, o = p],
								[u, p]
							]), i ? "center" : "edge" === v ? 0 < e ? "right" : "left" : 0 < e ? "left" :
						"right"), l = Math.PI, u = 0, G(p = g.get("rotate")) ? u = p * (l / 180) :
					"center" === y ? u = 0 : "radial" === p || !0 === p ? u = e < 0 ? -h + l : -h :
					"tangential" === p && "outside" !== y && "outer" !== y && ((g = Math.atan2(e, n)) < 0 &&
						(g = 2 * l + g), u = (g = 0 < n ? l + g : g) - l), C = !!u, d.x = r, d.y = o, d
					.rotation = u, d.setStyle({
						verticalAlign: "middle"
					}), i ? (d.setStyle({
						align: s
					}), (h = d.states.select) && (h.x += d.x, h.y += d.y)) : ((p = d.getBoundingRect()
							.clone()).applyTransform(d.getComputedTransform()), g = (d.style.margin || 0) +
						2.1, p.y -= g / 2, p.height += g, I.push({
							label: d,
							labelLine: f,
							position: y,
							len: b,
							len2: w,
							minTurnAngle: t.get("minTurnAngle"),
							maxSurfaceAngle: t.get("maxSurfaceAngle"),
							surfaceNormal: new H(e, n),
							linePoints: a,
							textAlign: s,
							labelDistance: m,
							labelAlignTo: v,
							edgeDistance: _,
							bleedMargin: x,
							rect: p,
							unconstrainedWidth: p.width,
							labelStyleWidth: d.style.width
						})), c.setTextConfig({
						inside: i
					}))
			}), !C && t.get("avoidLabelOverlap")) {
			for (var i = I, r = S, t = M, o = k, a = A, s = L, l = [], u = [], h = Number.MAX_VALUE, c = -Number
					.MAX_VALUE, p = 0; p < i.length; p++) {
				var d = i[p].label;
				iw(i[p]) || (d.x < r ? (h = Math.min(h, d.x), l) : (c = Math.max(c, d.x), u)).push(i[p])
			}
			for (var f, p = 0; p < i.length; p++) !iw(g = i[p]) && g.linePoints && null == g.labelStyleWidth && (d =
				g.label, y = g.linePoints, f = void 0, f = "edge" === g.labelAlignTo ? d.x < r ? y[2][0] - g
				.labelDistance - s - g.edgeDistance : s + a - g.edgeDistance - y[2][0] - g.labelDistance :
				"labelLine" === g.labelAlignTo ? d.x < r ? h - s - g.bleedMargin : s + a - c - g.bleedMargin : d
				.x < r ? d.x - s - g.bleedMargin : s + a - d.x - g.bleedMargin, g.targetTextWidth = f, nw(g, f));
			ew(u, r, t, o, 1, 0, e, 0, n, c), ew(l, r, t, o, -1, 0, e, 0, n, h);
			for (var g, y, m, v, _, p = 0; p < i.length; p++) !iw(g = i[p]) && g.linePoints && (d = g.label, y = g
				.linePoints, m = "edge" === g.labelAlignTo, v = (v = d.style.padding) ? v[1] + v[3] : 0, v = d
				.style.backgroundColor ? 0 : v, v = g.rect.width + v, _ = y[1][0] - y[2][0], m ? d.x < r ? y[2][
					0
				] = s + g.edgeDistance + v + g.labelDistance : y[2][0] = s + a - g.edgeDistance - v - g
				.labelDistance : (d.x < r ? y[2][0] = d.x + g.labelDistance : y[2][0] = d.x - g.labelDistance,
					y[1][0] = y[2][0] + _), y[1][1] = y[2][1] = d.y)
		}
		for (var x = 0; x < I.length; x++) {
			var b, w = I[x],
				O = w.label,
				R = w.labelLine,
				N = isNaN(O.x) || isNaN(O.y);
			O && (O.setStyle({
				align: w.textAlign
			}), N && (E(O.states, P), O.ignore = !0), b = O.states.select) && (b.x += O.x, b.y += O.y), R && (
				b = w.linePoints, N || !b ? (E(R.states, P), R.ignore = !0) : (F1(b, w.minTurnAngle), function(
					t, e, n) {
					if (n <= 180 && 0 < n) {
						n = n / 180 * Math.PI, L1.fromArray(t[0]), P1.fromArray(t[1]), O1.fromArray(t[2]), H
							.sub(R1, P1, L1), H.sub(N1, O1, P1);
						var i = R1.len(),
							r = N1.len();
						if (!(i < .001 || r < .001))
							if (R1.scale(1 / i), N1.scale(1 / r), R1.dot(e) < Math.cos(n)) {
								i = C1(P1.x, P1.y, O1.x, O1.y, L1.x, L1.y, z1, !1), r = (B1.fromArray(z1),
									Math.PI / 2), e = r + Math.acos(N1.dot(e)) - n;
								if (r <= e) H.copy(B1, O1);
								else {
									B1.scaleAndAdd(N1, i / Math.tan(Math.PI / 2 - e));
									n = O1.x !== P1.x ? (B1.x - P1.x) / (O1.x - P1.x) : (B1.y - P1.y) / (O1
										.y - P1.y);
									if (isNaN(n)) return;
									n < 0 ? H.copy(B1, P1) : 1 < n && H.copy(B1, O1)
								}
								B1.toArray(t[1])
							}
					}
				}(b, w.surfaceNormal, w.maxSurfaceAngle), R.setShape({
					points: b
				}), O.__hostTarget.textGuideLineConfig = {
					anchor: new H(b[0][0], b[0][1])
				}))
		}
	}
	u(sw, ow = zu), sw.prototype.updateData = function(t, e, n, i) {
		var r = this,
			o = t.hostModel,
			a = t.getItemModel(e),
			s = a.getModel("emphasis"),
			l = t.getItemLayout(e),
			u = P(Bx(a.getModel("itemStyle"), l, !0), l);
		isNaN(u.startAngle) ? r.setShape(u) : (i ? (r.setShape(u), i = o.getShallow("animationType"), o.ecModel
				.ssr ? (Nh(r, {
					scaleX: 0,
					scaleY: 0
				}, o, {
					dataIndex: e,
					isFrom: !0
				}), r.originX = u.cx, r.originY = u.cy) : "scale" === i ? (r.shape.r = l.r0, Nh(r, {
					shape: {
						r: l.r
					}
				}, o, e)) : null != n ? (r.setShape({
					startAngle: n,
					endAngle: n
				}), Nh(r, {
					shape: {
						startAngle: l.startAngle,
						endAngle: l.endAngle
					}
				}, o, e)) : (r.shape.endAngle = l.startAngle, Rh(r, {
					shape: {
						endAngle: l.endAngle
					}
				}, o, e))) : (Vh(r), Rh(r, {
				shape: u
			}, o, e)), r.useStyle(t.getItemVisual(e, "style")), Ul(r, a), i = (l.startAngle + l.endAngle) /
			2, n = o.get("selectedOffset"), u = Math.cos(i) * n, i = Math.sin(i) * n, (n = a.getShallow(
				"cursor")) && r.attr("cursor", n), this._updateLabel(o, t, e), r.ensureState("emphasis")
			.shape = P({
				r: l.r + (s.get("scale") && s.get("scaleSize") || 0)
			}, Bx(s.getModel("itemStyle"), l)), P(r.ensureState("select"), {
				x: u,
				y: i,
				shape: Bx(a.getModel(["select", "itemStyle"]), l)
			}), P(r.ensureState("blur"), {
				shape: Bx(a.getModel(["blur", "itemStyle"]), l)
			}), n = r.getTextGuideLine(), o = r.getTextContent(), n && P(n.ensureState("select"), {
				x: u,
				y: i
			}), P(o.ensureState("select"), {
				x: u,
				y: i
			}), Gl(this, s.get("focus"), s.get("blurScope"), s.get("disabled")))
	}, sw.prototype._updateLabel = function(t, e, n) {
		var i = e.getItemModel(n),
			r = i.getModel("labelLine"),
			o = e.getItemVisual(n, "style"),
			a = o && o.fill,
			o = o && o.opacity,
			e = (mc(this, vc(i), {
				labelFetcher: e.hostModel,
				labelDataIndex: n,
				inheritColor: a,
				defaultOpacity: o,
				defaultText: t.getFormattedLabel(n, "normal") || e.getName(n)
			}), this.getTextContent()),
			n = (this.setTextConfig({
				position: null,
				rotation: null
			}), e.attr({
				z2: 10
			}), t.get(["label", "position"]));
		"outside" !== n && "outer" !== n ? this.removeTextGuideLine() : (this.getTextGuideLine() || (e = new Ku,
			this.setTextGuideLine(e)), H1(this, W1(i), {
			stroke: a,
			opacity: wt(r.get(["lineStyle", "opacity"]), o, 1)
		}))
	};
	var ow, aw = sw;

	function sw(t, e, n) {
		var i = ow.call(this) || this,
			r = (i.z2 = 2, new Vs);
		return i.setTextContent(r), i.updateData(t, e, n, !0), i
	}
	u(hw, lw = iy), hw.prototype.render = function(e, t, n, i) {
		var r, o = e.getData(),
			a = this._data,
			s = this.group;
		if (!a && 0 < o.count()) {
			for (var l = o.getItemLayout(0), u = 1; isNaN(l && l.startAngle) && u < o.count(); ++u) l = o
				.getItemLayout(u);
			l && (r = l.startAngle)
		}
		this._emptyCircleSector && s.remove(this._emptyCircleSector), 0 === o.count() && e.get(
			"showEmptyCircle") && ((n = new zu({
			shape: Qb(e, n)
		})).useStyle(e.getModel("emptyCircleStyle").getItemStyle()), this._emptyCircleSector = n, s.add(
			n)), o.diff(a).add(function(t) {
			var e = new aw(o, t, r);
			o.setItemGraphicEl(t, e), s.add(e)
		}).update(function(t, e) {
			e = a.getItemGraphicEl(e);
			e.updateData(o, t, r), e.off("click"), s.add(e), o.setItemGraphicEl(t, e)
		}).remove(function(t) {
			Fh(a.getItemGraphicEl(t), e, t)
		}).execute(), rw(e), "expansion" !== e.get("animationTypeUpdate") && (this._data = o)
	}, hw.prototype.dispose = function() {}, hw.prototype.containPoint = function(t, e) {
		var n, e = e.getData().getItemLayout(0);
		if (e) return n = t[0] - e.cx, t = t[1] - e.cy, (n = Math.sqrt(n * n + t * t)) <= e.r && n >= e.r0
	}, hw.type = "pie";
	var lw, uw = hw;

	function hw() {
		var t = null !== lw && lw.apply(this, arguments) || this;
		return t.ignoreLabelLineUpdate = !0, t
	}
	pw.prototype.getAllNames = function() {
		var t = this._getRawData();
		return t.mapArray(t.getName)
	}, pw.prototype.containName = function(t) {
		return 0 <= this._getRawData().indexOfName(t)
	}, pw.prototype.indexOfName = function(t) {
		return this._getDataWithEncodedVisual().indexOfName(t)
	}, pw.prototype.getItemVisual = function(t, e) {
		return this._getDataWithEncodedVisual().getItemVisual(t, e)
	};
	var cw = pw;

	function pw(t, e) {
		this._getDataWithEncodedVisual = t, this._getRawData = e
	}
	var dw, fw = No(),
		gw = (u(yw, dw = Ug), yw.prototype.init = function(t) {
			dw.prototype.init.apply(this, arguments), this.legendVisualProvider = new cw(pt(this.getData, this),
				pt(this.getRawData, this)), this._defaultLabelLine(t)
		}, yw.prototype.mergeOption = function() {
			dw.prototype.mergeOption.apply(this, arguments)
		}, yw.prototype.getInitialData = function() {
			return e = F(e = {
				coordDimensions: ["value"],
				encodeDefaulter: S(hd, t = this)
			}) ? {
				coordDimensions: e
			} : P({
				encodeDefine: t.getEncode()
			}, e), i = t.getSource(), e = kv(i, e).dimensions, (e = new Dv(e, t)).initData(i, n), e;
			var t, e, n, i
		}, yw.prototype.getDataParams = function(t) {
			var e, n = this.getData(),
				i = fw(n),
				r = i.seats,
				i = (r || (e = [], n.each(n.mapDimension("value"), function(t) {
						e.push(t)
					}), r = i.seats = lo(e, n.hostModel.get("percentPrecision"))), dw.prototype.getDataParams
					.call(this, t));
			return i.percent = r[t] || 0, i.$vars.push("percent"), i
		}, yw.prototype._defaultLabelLine = function(t) {
			Mo(t, "labelLine", ["show"]);
			var e = t.labelLine,
				n = t.emphasis.labelLine;
			e.show = e.show && t.label.show, n.show = n.show && t.emphasis.label.show
		}, yw.type = "series.pie", yw.defaultOption = {
			z: 2,
			legendHoverLink: !0,
			colorBy: "data",
			center: ["50%", "50%"],
			radius: [0, "75%"],
			clockwise: !0,
			startAngle: 90,
			endAngle: "auto",
			padAngle: 0,
			minAngle: 0,
			minShowLabelAngle: 0,
			selectedOffset: 10,
			percentPrecision: 2,
			stillShowZeroSum: !0,
			left: 0,
			top: 0,
			right: 0,
			bottom: 0,
			width: null,
			height: null,
			label: {
				rotate: 0,
				show: !0,
				overflow: "truncate",
				position: "outer",
				alignTo: "none",
				edgeDistance: "25%",
				bleedMargin: 10,
				distanceToLabelLine: 5
			},
			labelLine: {
				show: !0,
				length: 15,
				length2: 15,
				smooth: !1,
				minTurnAngle: 90,
				maxSurfaceAngle: 90,
				lineStyle: {
					width: 1,
					type: "solid"
				}
			},
			itemStyle: {
				borderWidth: 1,
				borderJoin: "round"
			},
			showEmptyCircle: !0,
			emptyCircleStyle: {
				color: "lightgray",
				opacity: 1
			},
			labelLayout: {
				hideOverlap: !0
			},
			emphasis: {
				scale: !0,
				scaleSize: 5
			},
			avoidLabelOverlap: !0,
			animationType: "expansion",
			animationDuration: 1e3,
			animationTypeUpdate: "transition",
			animationEasingUpdate: "cubicInOut",
			animationDurationUpdate: 500,
			animationEasing: "cubicInOut"
		}, yw);

	function yw() {
		return null !== dw && dw.apply(this, arguments) || this
	}
	Z_(function(t) {
		t.registerChartView(uw), t.registerSeriesModel(gw), Yy("pie", t.registerAction), t.registerLayout(S(
			Jb, "pie")), t.registerProcessor({
			seriesType: "pie",
			reset: function(t, e) {
				var i, r = e.findComponents({
					mainType: "legend"
				});
				r && r.length && (i = t.getData()).filterSelf(function(t) {
					for (var e = i.getName(t), n = 0; n < r.length; n++)
						if (!r[n].isSelected(e)) return !1;
					return !0
				})
			}
		}), t.registerProcessor({
			seriesType: "pie",
			reset: function(t, e) {
				var n = t.getData();
				n.filterSelf(function(t) {
					var e = n.mapDimension("value"),
						e = n.get(e, t);
					return !(G(e) && !isNaN(e) && e < 0)
				})
			}
		})
	});
	u(_w, mw = g), _w.type = "grid", _w.dependencies = ["xAxis", "yAxis"], _w.layoutMode = "box", _w
	.defaultOption = {
		show: !1,
		z: 0,
		left: "10%",
		top: 60,
		right: "10%",
		bottom: 70,
		containLabel: !1,
		backgroundColor: "rgba(0,0,0,0)",
		borderWidth: 1,
		borderColor: "#ccc"
	};
	var mw, vw = _w;

	function _w() {
		return null !== mw && mw.apply(this, arguments) || this
	}
	u(ww, xw = g), ww.prototype.getCoordSysModel = function() {
		return this.getReferringComponents("grid", Fo).models[0]
	}, ww.type = "cartesian2dAxis";
	var xw, bw = ww;

	function ww() {
		return null !== xw && xw.apply(this, arguments) || this
	}
	st(bw, U_);
	var jo = {
			show: !0,
			z: 0,
			inverse: !1,
			name: "",
			nameLocation: "end",
			nameRotate: null,
			nameTruncate: {
				maxWidth: null,
				ellipsis: "...",
				placeholder: "."
			},
			nameTextStyle: {},
			nameGap: 15,
			silent: !1,
			triggerEvent: !1,
			tooltip: {
				show: !1
			},
			axisPointer: {},
			axisLine: {
				show: !0,
				onZero: !0,
				onZeroAxisIndex: null,
				lineStyle: {
					color: "#6E7079",
					width: 1,
					type: "solid"
				},
				symbol: ["none", "none"],
				symbolSize: [10, 15]
			},
			axisTick: {
				show: !0,
				inside: !1,
				length: 5,
				lineStyle: {
					width: 1
				}
			},
			axisLabel: {
				show: !0,
				inside: !1,
				rotate: 0,
				showMinLabel: null,
				showMaxLabel: null,
				margin: 8,
				fontSize: 12
			},
			splitLine: {
				show: !0,
				lineStyle: {
					color: ["#E0E6F1"],
					width: 1,
					type: "solid"
				}
			},
			splitArea: {
				show: !1,
				areaStyle: {
					color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
				}
			}
		},
		$y = d({
			boundaryGap: !0,
			deduplication: null,
			splitLine: {
				show: !1
			},
			axisTick: {
				alignWithLabel: !1,
				interval: "auto"
			},
			axisLabel: {
				interval: "auto"
			}
		}, jo),
		nm = d({
			boundaryGap: [0, 0],
			axisLine: {
				show: "auto"
			},
			axisTick: {
				show: "auto"
			},
			splitNumber: 5,
			minorTick: {
				show: !1,
				splitNumber: 5,
				length: 3,
				lineStyle: {}
			},
			minorSplitLine: {
				show: !1,
				lineStyle: {
					color: "#F4F7FD",
					width: 1
				}
			}
		}, jo),
		Sw = {
			category: $y,
			value: nm,
			time: d({
				splitNumber: 6,
				axisLabel: {
					showMinLabel: !1,
					showMaxLabel: !1,
					rich: {
						primary: {
							fontWeight: "bold"
						}
					}
				},
				splitLine: {
					show: !1
				}
			}, nm),
			log: z({
				logBase: 10
			}, nm)
		},
		Mw = {
			value: 1,
			category: 1,
			time: 1,
			log: 1
		};

	function Tw(o, a, s, l) {
		E(Mw, function(t, r) {
			var e, n = d(d({}, Sw[r], !0), l, !0),
				n = (u(i, e = s), i.prototype.mergeDefaultAndTheme = function(t, e) {
					var n = Gp(this),
						i = n ? Wp(t) : {};
					d(t, e.getTheme().get(r + "Axis")), d(t, this.getDefaultOption()), t.type = Iw(t),
						n && Hp(t, i, n)
				}, i.prototype.optionUpdated = function() {
					"category" === this.option.type && (this.__ordinalMeta = Vv.createByAxisModel(this))
				}, i.prototype.getCategories = function(t) {
					var e = this.option;
					if ("category" === e.type) return t ? e.data : this.__ordinalMeta.categories
				}, i.prototype.getOrdinalMeta = function() {
					return this.__ordinalMeta
				}, i.type = a + "Axis." + r, i.defaultOption = n, i);

			function i() {
				var t = null !== e && e.apply(this, arguments) || this;
				return t.type = a + "Axis." + r, t
			}
			o.registerComponentModel(n)
		}), o.registerSubTypeDefaulter(a + "Axis", Iw)
	}

	function Iw(t) {
		return t.type || (t.data ? "category" : "value")
	}

	function Cw(t) {
		this.type = "cartesian", this._dimList = [], this._axes = {}, this.name = t || ""
	}
	Cw.prototype.getAxis = function(t) {
		return this._axes[t]
	}, Cw.prototype.getAxes = function() {
		return B(this._dimList, function(t) {
			return this._axes[t]
		}, this)
	}, Cw.prototype.getAxesByScale = function(e) {
		return e = e.toLowerCase(), ht(this.getAxes(), function(t) {
			return t.scale.type === e
		})
	}, Cw.prototype.addAxis = function(t) {
		var e = t.dim;
		this._axes[e] = t, this._dimList.push(e)
	};
	var Dw = ["x", "y"];

	function kw(t) {
		return "interval" === t.type || "time" === t.type
	}
	u(Pw, Aw = Cw), Pw.prototype.calcAffineTransform = function() {
		this._transform = this._invTransform = null;
		var t, e, n, i, r = this.getAxis("x").scale,
			o = this.getAxis("y").scale;
		kw(r) && kw(o) && (r = r.getExtent(), o = o.getExtent(), i = this.dataToPoint([r[0], o[0]]), e = this
			.dataToPoint([r[1], o[1]]), t = r[1] - r[0], n = o[1] - o[0], t) && n && (t = (e[0] - i[0]) / t,
			e = (e[1] - i[1]) / n, n = i[0] - r[0] * t, r = i[1] - o[0] * e, i = this._transform = [t, 0, 0,
				e, n, r
			], this._invTransform = Fe([], i))
	}, Pw.prototype.getBaseAxis = function() {
		return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x")
	}, Pw.prototype.containPoint = function(t) {
		var e = this.getAxis("x"),
			n = this.getAxis("y");
		return e.contain(e.toLocalCoord(t[0])) && n.contain(n.toLocalCoord(t[1]))
	}, Pw.prototype.containData = function(t) {
		return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1])
	}, Pw.prototype.containZone = function(t, e) {
		var t = this.dataToPoint(t),
			e = this.dataToPoint(e),
			n = this.getArea(),
			e = new X(t[0], t[1], e[0] - t[0], e[1] - t[1]);
		return n.intersect(e)
	}, Pw.prototype.dataToPoint = function(t, e, n) {
		n = n || [];
		var i, r = t[0],
			o = t[1];
		return this._transform && null != r && isFinite(r) && null != o && isFinite(o) ? ee(n, t, this
			._transform) : (t = this.getAxis("x"), i = this.getAxis("y"), n[0] = t.toGlobalCoord(t
			.dataToCoord(r, e)), n[1] = i.toGlobalCoord(i.dataToCoord(o, e)), n)
	}, Pw.prototype.clampData = function(t, e) {
		var n = this.getAxis("x").scale,
			i = this.getAxis("y").scale,
			r = n.getExtent(),
			o = i.getExtent(),
			n = n.parse(t[0]),
			i = i.parse(t[1]);
		return (e = e || [])[0] = Math.min(Math.max(Math.min(r[0], r[1]), n), Math.max(r[0], r[1])), e[1] = Math
			.min(Math.max(Math.min(o[0], o[1]), i), Math.max(o[0], o[1])), e
	}, Pw.prototype.pointToData = function(t, e) {
		var n, i, r = [];
		return this._invTransform ? ee(r, t, this._invTransform) : (n = this.getAxis("x"), i = this.getAxis(
			"y"), r[0] = n.coordToData(n.toLocalCoord(t[0]), e), r[1] = i.coordToData(i.toLocalCoord(t[1]),
				e), r)
	}, Pw.prototype.getOtherAxis = function(t) {
		return this.getAxis("x" === t.dim ? "y" : "x")
	}, Pw.prototype.getArea = function(t) {
		t = t || 0;
		var e = this.getAxis("x").getGlobalExtent(),
			n = this.getAxis("y").getGlobalExtent(),
			i = Math.min(e[0], e[1]) - t,
			r = Math.min(n[0], n[1]) - t,
			e = Math.max(e[0], e[1]) - i + t,
			n = Math.max(n[0], n[1]) - r + t;
		return new X(i, r, e, n)
	};
	var Aw, Lw = Pw;

	function Pw() {
		var t = null !== Aw && Aw.apply(this, arguments) || this;
		return t.type = "cartesian2d", t.dimensions = Dw, t
	}
	u(Nw, Ow = Nc), Nw.prototype.isHorizontal = function() {
		var t = this.position;
		return "top" === t || "bottom" === t
	}, Nw.prototype.getGlobalExtent = function(t) {
		var e = this.getExtent();
		return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e
		.reverse(), e
	}, Nw.prototype.pointToData = function(t, e) {
		return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e)
	}, Nw.prototype.setCategorySortInfo = function(t) {
		if ("category" !== this.type) return !1;
		this.model.option.categorySortInfo = t, this.scale.setSortInfo(t)
	};
	var Ow, Rw = Nw;

	function Nw(t, e, n, i, r) {
		t = Ow.call(this, t, e, n) || this;
		return t.index = 0, t.type = i || "value", t.position = r || "bottom", t
	}

	function Ew(t, e, n) {
		n = n || {};
		var t = t.coordinateSystem,
			i = e.axis,
			r = {},
			o = i.getAxesOnZeroOf()[0],
			a = i.position,
			s = o ? "onZero" : a,
			i = i.dim,
			t = t.getRect(),
			t = [t.x, t.x + t.width, t.y, t.y + t.height],
			l = {
				left: 0,
				right: 1,
				top: 0,
				bottom: 1,
				onZero: 2
			},
			u = e.get("offset") || 0,
			u = "x" === i ? [t[2] - u, t[3] + u] : [t[0] - u, t[1] + u],
			h = (o && (h = o.toGlobalCoord(o.dataToCoord(0)), u[l.onZero] = Math.max(Math.min(h, u[1]), u[0])), r
				.position = ["y" === i ? u[l[s]] : t[0], "x" === i ? u[l[s]] : t[3]], r.rotation = Math.PI / 2 * (
					"x" === i ? 0 : 1), r.labelDirection = r.tickDirection = r.nameDirection = {
					top: -1,
					bottom: 1,
					left: -1,
					right: 1
				} [a], r.labelOffset = o ? u[l[a]] - u[l.onZero] : 0, e.get(["axisTick", "inside"]) && (r
					.tickDirection = -r.tickDirection), bt(n.labelInside, e.get(["axisLabel", "inside"])) && (r
					.labelDirection = -r.labelDirection), e.get(["axisLabel", "rotate"]));
		return r.labelRotate = "top" === s ? -h : h, r.z2 = 1, r
	}

	function zw(t) {
		return "cartesian2d" === t.get("coordinateSystem")
	}

	function Bw(i) {
		var r = {
			xAxisModel: null,
			yAxisModel: null
		};
		return E(r, function(t, e) {
			var n = e.replace(/Model$/, ""),
				n = i.getReferringComponents(n, Fo).models[0];
			r[e] = n
		}), r
	}
	var Fw = Math.log;
	Gw.prototype.getRect = function() {
		return this._rect
	}, Gw.prototype.update = function(t, e) {
		var n = this._axesMap;

		function i(t) {
			var d, e = ct(t),
				n = e.length;
			if (n) {
				for (var i = [], r = n - 1; 0 <= r; r--) {
					var o = t[+e[r]],
						a = o.model,
						s = o.scale;
					Wv(s) && a.get("alignTicks") && null == a.get("interval") ? i.push(o) : (z_(s, a), Wv(s) &&
						(d = o))
				}
				i.length && (d || z_((d = i.pop()).scale, d.model), E(i, function(t) {
					var e = t.scale,
						t = t.model,
						n = d.scale,
						i = n_.prototype,
						r = i.getTicks.call(n),
						o = i.getTicks.call(n, !0),
						a = r.length - 1,
						n = i.getInterval.call(n),
						s = (t = E_(e, t)).extent,
						l = t.fixMin,
						t = t.fixMax,
						u = ("log" === e.type && (u = Fw(e.base), s = [Fw(s[0]) / u, Fw(s[1]) / u]),
							e.setExtent(s[0], s[1]), e.calcNiceExtent({
								splitNumber: a,
								fixMin: l,
								fixMax: t
							}), i.getExtent.call(e)),
						h = (l && (s[0] = u[0]), t && (s[1] = u[1]), i.getInterval.call(e)),
						c = s[0],
						p = s[1];
					if (l && t) h = (p - c) / a;
					else if (l)
						for (p = s[0] + h * a; p < s[1] && isFinite(p) && isFinite(s[1]);) h = Xv(
							h), p = s[0] + h * a;
					else if (t)
						for (c = s[1] - h * a; c > s[0] && isFinite(c) && isFinite(s[0]);) h = Xv(
							h), c = s[1] - h * a;
					else {
						u = (h = a < e.getTicks().length - 1 ? Xv(h) : h) * a;
						(c = io((p = Math.ceil(s[1] / h) * h) - u)) < 0 && 0 <= s[0] ? (c = 0, p =
							io(u)) : 0 < p && s[1] <= 0 && (p = 0, c = -io(u))
					}
					l = (r[0].value - o[0].value) / n, t = (r[a].value - o[a].value) / n, i
						.setExtent.call(e, c + h * l, p + h * t), i.setInterval.call(e, h), (l ||
						t) && i.setNiceExtent.call(e, c + h, p - h)
				}))
			}
		}
		this._updateScale(t, this.model), i(n.x), i(n.y);
		var r = {};
		E(n.x, function(t) {
			Ww(n, "y", t, r)
		}), E(n.y, function(t) {
			Ww(n, "x", t, r)
		}), this.resize(this.model, e)
	}, Gw.prototype.resize = function(t, e, n) {
		var i = t.getBoxLayoutParams(),
			n = !n && t.get("containLabel"),
			a = Vp(i, {
				width: e.getWidth(),
				height: e.getHeight()
			}),
			r = (this._rect = a, this._axesList);

		function o() {
			E(r, function(t) {
				var e, n, i = t.isHorizontal(),
					r = i ? [0, a.width] : [0, a.height],
					o = t.inverse ? 1 : 0;
				t.setExtent(r[o], r[1 - o]), r = t, e = i ? a.x : a.y, o = r.getExtent(), n = o[0] + o[
					1], r.toGlobalCoord = "x" === r.dim ? function(t) {
					return t + e
				} : function(t) {
					return n - t + e
				}, r.toLocalCoord = "x" === r.dim ? function(t) {
					return t - e
				} : function(t) {
					return n - t + e
				}
			})
		}
		o(), n && (E(r, function(t) {
			var e, n, i;
			t.model.get(["axisLabel", "inside"]) || (e = G_(t)) && (n = t.isHorizontal() ?
				"height" : "width", i = t.model.get(["axisLabel", "margin"]), a[n] -= e[n] + i,
				"top" === t.position ? a.y += e.height + i : "left" === t.position && (a.x += e
					.width + i))
		}), o()), E(this._coordsList, function(t) {
			t.calcAffineTransform()
		})
	}, Gw.prototype.getAxis = function(t, e) {
		t = this._axesMap[t];
		if (null != t) return t[e || 0]
	}, Gw.prototype.getAxes = function() {
		return this._axesList.slice()
	}, Gw.prototype.getCartesian = function(t, e) {
		if (null != t && null != e) return this._coordsMap["x" + t + "y" + e];
		O(t) && (e = t.yAxisIndex, t = t.xAxisIndex);
		for (var n = 0, i = this._coordsList; n < i.length; n++)
			if (i[n].getAxis("x").index === t || i[n].getAxis("y").index === e) return i[n]
	}, Gw.prototype.getCartesians = function() {
		return this._coordsList.slice()
	}, Gw.prototype.convertToPixel = function(t, e, n) {
		e = this._findConvertTarget(e);
		return e.cartesian ? e.cartesian.dataToPoint(n) : e.axis ? e.axis.toGlobalCoord(e.axis.dataToCoord(n)) :
			null
	}, Gw.prototype.convertFromPixel = function(t, e, n) {
		e = this._findConvertTarget(e);
		return e.cartesian ? e.cartesian.pointToData(n) : e.axis ? e.axis.coordToData(e.axis.toLocalCoord(n)) :
			null
	}, Gw.prototype._findConvertTarget = function(t) {
		var e, n, i = t.seriesModel,
			r = t.xAxisModel || i && i.getReferringComponents("xAxis", Fo).models[0],
			o = t.yAxisModel || i && i.getReferringComponents("yAxis", Fo).models[0],
			t = t.gridModel,
			a = this._coordsList;
		return i ? C(a, e = i.coordinateSystem) < 0 && (e = null) : r && o ? e = this.getCartesian(r
				.componentIndex, o.componentIndex) : r ? n = this.getAxis("x", r.componentIndex) : o ? n = this
			.getAxis("y", o.componentIndex) : t && t.coordinateSystem === this && (e = this._coordsList[0]), {
				cartesian: e,
				axis: n
			}
	}, Gw.prototype.containPoint = function(t) {
		var e = this._coordsList[0];
		if (e) return e.containPoint(t)
	}, Gw.prototype._initCartesian = function(o, t, e) {
		var a = this,
			s = this,
			l = {
				left: !1,
				right: !1,
				top: !1,
				bottom: !1
			},
			u = {
				x: {},
				y: {}
			},
			h = {
				x: 0,
				y: 0
			};

		function n(r) {
			return function(t, e) {
				var n, i;
				Hw(t, o) && (n = t.get("position"), "x" === r ? "top" !== n && "bottom" !== n && (n = l
						.bottom ? "top" : "bottom") : "left" !== n && "right" !== n && (n = l.left ?
						"right" : "left"), l[n] = !0, i = "category" === (n = new Rw(r, B_(t), [0, 0], t
						.get("type"), n)).type, n.onBand = i && t.get("boundaryGap"), n.inverse = t.get(
						"inverse"), (t.axis = n).model = t, n.grid = s, n.index = e, s._axesList.push(
					n), u[r][e] = n, h[r]++)
			}
		}
		t.eachComponent("xAxis", n("x"), this), t.eachComponent("yAxis", n("y"), this), h.x && h.y ? E((this
			._axesMap = u).x, function(i, r) {
			E(u.y, function(t, e) {
				var e = "x" + r + "y" + e,
					n = new Lw(e);
				n.master = a, n.model = o, a._coordsMap[e] = n, a._coordsList.push(n), n
					.addAxis(i), n.addAxis(t)
			})
		}) : (this._axesMap = {}, this._axesList = [])
	}, Gw.prototype._updateScale = function(t, i) {
		function r(e, n) {
			var i, t, r;
			E((i = e, t = n.dim, r = {}, E(i.mapDimensionsAll(t), function(t) {
				r[Nv(i, t)] = !0
			}), ct(r)), function(t) {
				n.scale.unionExtentFromData(e, t)
			})
		}
		E(this._axesList, function(t) {
			var e;
			t.scale.setExtent(1 / 0, -1 / 0), "category" === t.type && (e = t.model.get(
				"categorySortInfo"), t.scale.setSortInfo(e))
		}), t.eachSeries(function(t) {
			var e, n;
			zw(t) && (n = (e = Bw(t)).xAxisModel, e = e.yAxisModel, Hw(n, i)) && Hw(e, i) && (n = this
				.getCartesian(n.componentIndex, e.componentIndex), e = t.getData(), t = n.getAxis(
					"x"), n = n.getAxis("y"), r(e, t), r(e, n))
		}, this)
	}, Gw.prototype.getTooltipAxes = function(n) {
		var i = [],
			r = [];
		return E(this.getCartesians(), function(t) {
			var e = null != n && "auto" !== n ? t.getAxis(n) : t.getBaseAxis(),
				t = t.getOtherAxis(e);
			C(i, e) < 0 && i.push(e), C(r, t) < 0 && r.push(t)
		}), {
			baseAxes: i,
			otherAxes: r
		}
	}, Gw.create = function(i, r) {
		var o = [];
		return i.eachComponent("grid", function(t, e) {
			var n = new Gw(t, i, r);
			n.name = "grid_" + e, n.resize(t, r, !0), t.coordinateSystem = n, o.push(n)
		}), i.eachSeries(function(t) {
			var e, n, i;
			zw(t) && (e = (n = Bw(t)).xAxisModel, n = n.yAxisModel, i = e.getCoordSysModel()
				.coordinateSystem, t.coordinateSystem = i.getCartesian(e.componentIndex, n
					.componentIndex))
		}), o
	}, Gw.dimensions = Dw;
	var Vw = Gw;

	function Gw(t, e, n) {
		this.type = "grid", this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [],
			this.axisPointerEnabled = !0, this.dimensions = Dw, this._initCartesian(t, e, n), this.model = t
	}

	function Hw(t, e) {
		return t.getCoordSysModel() === e
	}

	function Ww(t, e, n, i) {
		n.getAxesOnZeroOf = function() {
			return r ? [r] : []
		};
		var r, o = t[e],
			t = n.model,
			e = t.get(["axisLine", "onZero"]),
			n = t.get(["axisLine", "onZeroAxisIndex"]);
		if (e) {
			if (null != n) Uw(o[n]) && (r = o[n]);
			else
				for (var a in o)
					if (o.hasOwnProperty(a) && Uw(o[a]) && !i[s(o[a])]) {
						r = o[a];
						break
					} r && (i[s(r)] = !0)
		}

		function s(t) {
			return t.dim + "_" + t.index
		}
	}

	function Uw(t) {
		return t && "category" !== t.type && "time" !== t.type && (e = (t = (t = t).scale.getExtent())[0], t = t[1],
			!(0 < e && 0 < t || e < 0 && t < 0));
		var e
	}
	var Xw = Math.PI,
		Yw = (qw.prototype.hasBuilder = function(t) {
			return !!Zw[t]
		}, qw.prototype.add = function(t) {
			Zw[t](this.opt, this.axisModel, this.group, this._transformGroup)
		}, qw.prototype.getGroup = function() {
			return this.group
		}, qw.innerTextLayout = function(t, e, n) {
			var i, e = uo(e - t),
				t = ho(e) ? (i = 0 < n ? "top" : "bottom", "center") : ho(e - Xw) ? (i = 0 < n ? "bottom" :
					"top", "center") : (i = "middle", 0 < e && e < Xw ? 0 < n ? "right" : "left" : 0 < n ?
					"left" : "right");
			return {
				rotation: e,
				textAlign: t,
				textVerticalAlign: i
			}
		}, qw.makeAxisEventDataBase = function(t) {
			var e = {
				componentType: t.mainType,
				componentIndex: t.componentIndex
			};
			return e[t.mainType + "Index"] = t.componentIndex, e
		}, qw.isLabelSilent = function(t) {
			var e = t.get("tooltip");
			return t.get("silent") || !(t.get("triggerEvent") || e && e.show)
		}, qw);

	function qw(t, e) {
		this.group = new Ur, this.opt = e, this.axisModel = t, z(e, {
			labelOffset: 0,
			nameDirection: 1,
			tickDirection: 1,
			labelDirection: 1,
			silent: !0,
			handleAutoShown: function() {
				return !0
			}
		});
		t = new Ur({
			x: e.position[0],
			y: e.position[1],
			rotation: e.rotation
		});
		t.updateTransform(), this._transformGroup = t
	}
	var Zw = {
		axisLine: function(i, t, r, e) {
			var o, a, s, l, u, h, c, n = t.get(["axisLine", "show"]);
			(n = "auto" === n && i.handleAutoShown ? i.handleAutoShown("axisLine") : n) && (n = t.axis
				.getExtent(), e = e.transform, o = [n[0], 0], a = [n[1], 0], s = a[0] < o[0], e && (ee(o, o,
					e), ee(a, a, e)), l = P({
					lineCap: "round"
				}, t.getModel(["axisLine", "lineStyle"]).getLineStyle()), tc((n = new eh({
					shape: {
						x1: o[0],
						y1: o[1],
						x2: a[0],
						y2: a[1]
					},
					style: l,
					strokeContainThreshold: i.strokeContainThreshold || 5,
					silent: !0,
					z2: 1
				})).shape, n.style.lineWidth), n.anid = "line", r.add(n), null != (u = t.get(["axisLine",
					"symbol"
				]))) && (e = t.get(["axisLine", "symbolSize"]), V(u) && (u = [u, u]), (V(e) || G(e)) && (
				e = [e, e]), n = um(t.get(["axisLine", "symbolOffset"]) || 0, e), h = e[0], c = e[1], E(
				[{
					rotate: i.rotation + Math.PI / 2,
					offset: n[0],
					r: 0
				}, {
					rotate: i.rotation - Math.PI / 2,
					offset: n[1],
					r: Math.sqrt((o[0] - a[0]) * (o[0] - a[0]) + (o[1] - a[1]) * (o[1] - a[1]))
				}],
				function(t, e) {
					var n;
					"none" !== u[e] && null != u[e] && (e = sm(u[e], -h / 2, -c / 2, h, c, l.stroke, !
						0), n = t.r + t.offset, e.attr({
							rotation: t.rotate,
							x: (t = s ? a : o)[0] + n * Math.cos(i.rotation),
							y: t[1] - n * Math.sin(i.rotation),
							silent: !0,
							z2: 11
						}), r.add(e))
				}))
		},
		axisTickLabel: function(t, e, n, i) {
			var r, o, a, s, l, u = function(t, e, n, i) {
					var r = n.axis,
						o = n.getModel("axisTick"),
						a = o.get("show");
					"auto" === a && i.handleAutoShown && (a = i.handleAutoShown("axisTick"));
					if (a && !r.scale.isBlank()) {
						for (var a = o.getModel("lineStyle"), i = i.tickDirection * o.get("length"), s = Qw(
								r.getTicksCoords(), e.transform, i, z(a.getLineStyle(), {
									stroke: n.get(["axisLine", "lineStyle", "color"])
								}), "ticks"), l = 0; l < s.length; l++) t.add(s[l]);
						return s
					}
				}(n, i, e, t),
				h = function(f, g, y, m) {
					var v, _, x, b, w, S, M, T, I = y.axis,
						t = bt(m.axisLabelShow, y.get(["axisLabel", "show"]));
					if (t && !I.scale.isBlank()) return v = y.getModel("axisLabel"), _ = v.get("margin"),
						x = I.getViewLabels(), t = (bt(m.labelRotate, v.get("rotate")) || 0) * Xw / 180,
						b = Yw.innerTextLayout(m.rotation, t, m.labelDirection), w = y.getCategories &&
						y.getCategories(!0), S = [], M = Yw.isLabelSilent(y), T = y.get("triggerEvent"),
						E(x, function(t, e) {
							var n = "ordinal" === I.scale.type ? I.scale.getRawOrdinalNumber(t
									.tickValue) : t.tickValue,
								i = t.formattedLabel,
								r = t.rawLabel,
								o = v,
								a = (o = w && w[n] && O(a = w[n]) && a.textStyle ? new Vc(a
									.textStyle, v, y.ecModel) : o).getTextColor() || y.get([
									"axisLine", "lineStyle", "color"
								]),
								s = I.dataToCoord(n),
								l = o.getShallow("align", !0) || b.textAlign,
								u = R(o.getShallow("alignMinLabel", !0), l),
								h = R(o.getShallow("alignMaxLabel", !0), l),
								c = o.getShallow("verticalAlign", !0) || o.getShallow("baseline", !
									0) || b.textVerticalAlign,
								p = R(o.getShallow("verticalAlignMinLabel", !0), c),
								d = R(o.getShallow("verticalAlignMaxLabel", !0), c),
								s = new Vs({
									x: s,
									y: m.labelOffset + m.labelDirection * _,
									rotation: b.rotation,
									silent: M,
									z2: 10 + (t.level || 0),
									style: _c(o, {
										text: i,
										align: 0 === e ? u : e === x.length - 1 ? h : l,
										verticalAlign: 0 === e ? p : e === x.length -
											1 ? d : c,
										fill: D(a) ? a("category" === I.type ? r :
											"value" === I.type ? n + "" : n, e) : a
									})
								});
							s.anid = "label_" + n, T && ((t = Yw.makeAxisEventDataBase(y))
									.targetType = "axisLabel", t.value = r, t.tickIndex = e,
									"category" === I.type && (t.dataIndex = n), k(s).eventData = t),
								g.add(s), s.updateTransform(), S.push(s), f.add(s), s
								.decomposeTransform()
						}), S
				}(n, i, e, t),
				c = (o = h, u = u, W_((r = e).axis) || (d = r.get(["axisLabel", "showMinLabel"]), r = r.get(
						["axisLabel", "showMaxLabel"]), u = u || [], y = (o = o || [])[0], f = o[1], a =
					o[o.length - 1], o = o[o.length - 2], s = u[0], g = u[1], l = u[u.length - 1], u =
					u[u.length - 2], !1 === d ? (jw(y), jw(s)) : Kw(y, f) && (d ? (jw(f), jw(g)) : (jw(
						y), jw(s))), !1 === r ? (jw(a), jw(l)) : Kw(o, a) && (r ? (jw(o), jw(u)) : (jw(
						a), jw(l)))), n),
				p = i,
				d = e,
				f = t.tickDirection,
				g = d.axis,
				y = d.getModel("minorTick");
			if (y.get("show") && !g.scale.isBlank()) {
				var m = g.getMinorTicksCoords();
				if (m.length)
					for (var g = y.getModel("lineStyle"), v = f * y.get("length"), _ = z(g.getLineStyle(),
							z(d.getModel("axisTick").getLineStyle(), {
								stroke: d.get(["axisLine", "lineStyle", "color"])
							})), x = 0; x < m.length; x++)
						for (var b = Qw(m[x], p.transform, v, _, "minorticks_" + x), w = 0; w < b
							.length; w++) c.add(b[w])
			}
			e.get(["axisLabel", "hideOverlap"]) && q1(U1(B(h, function(t) {
				return {
					label: t,
					priority: t.z2,
					defaultAttr: {
						ignore: t.ignore
					}
				}
			})))
		},
		axisName: function(t, e, n, i) {
			var r, o, a, s, l, u, h, c, p = bt(t.axisName, e.get("name"));
			p && (c = e.get("nameLocation"), l = t.nameDirection, r = e.getModel("nameTextStyle"), u = e
				.get("nameGap") || 0, o = (h = e.axis.getExtent())[0] > h[1] ? -1 : 1, o = ["start" ===
					c ? h[0] - o * u : "end" === c ? h[1] + o * u : (h[0] + h[1]) / 2, $w(c) ? t
					.labelOffset + l * u : 0
				], null != (u = e.get("nameRotate")) && (u = u * Xw / 180), $w(c) ? a = Yw
				.innerTextLayout(t.rotation, null != u ? u : t.rotation, l) : (a = function(t, e, n,
				i) {
					var r, n = uo(n - t),
						t = i[0] > i[1],
						i = "start" === e && !t || "start" !== e && t;
					e = ho(n - Xw / 2) ? (r = i ? "bottom" : "top", "center") : ho(n - 1.5 * Xw) ? (
						r = i ? "top" : "bottom", "center") : (r = "middle", n < 1.5 * Xw &&
						Xw / 2 < n ? i ? "left" : "right" : i ? "right" : "left");
					return {
						rotation: n,
						textAlign: e,
						textVerticalAlign: r
					}
				}(t.rotation, c, u || 0, h), null != (s = t.axisNameAvailableWidth) && (s = Math
					.abs(s / Math.sin(a.rotation)), isFinite(s) || (s = null))), l = r.getFont(), u = (
					c = e.get("nameTruncate", !0) || {}).ellipsis, h = bt(t.nameTruncateMaxWidth, c
					.maxWidth, s), hc({
					el: t = new Vs({
						x: o[0],
						y: o[1],
						rotation: a.rotation,
						silent: Yw.isLabelSilent(e),
						style: _c(r, {
							text: p,
							font: l,
							overflow: "truncate",
							width: h,
							ellipsis: u,
							fill: r.getTextColor() || e.get(["axisLine",
								"lineStyle", "color"
							]),
							align: r.get("align") || a.textAlign,
							verticalAlign: r.get("verticalAlign") || a
								.textVerticalAlign
						}),
						z2: 1
					}),
					componentModel: e,
					itemName: p
				}), t.__fullText = p, t.anid = "name", e.get("triggerEvent") && ((c = Yw
						.makeAxisEventDataBase(e)).targetType = "axisName", c.name = p, k(t).eventData =
					c), i.add(t), t.updateTransform(), n.add(t), t.decomposeTransform())
		}
	};

	function jw(t) {
		t && (t.ignore = !0)
	}

	function Kw(t, e) {
		var n, i = t && t.getBoundingRect().clone(),
			r = e && e.getBoundingRect().clone();
		if (i && r) return ze(n = Oe([]), n, -t.rotation), i.applyTransform(Ne([], n, t.getLocalTransform())), r
			.applyTransform(Ne([], n, e.getLocalTransform())), i.intersect(r)
	}

	function $w(t) {
		return "middle" === t || "center" === t
	}

	function Qw(t, e, n, i, r) {
		for (var o = [], a = [], s = [], l = 0; l < t.length; l++) {
			var u = t[l].coord,
				u = (a[0] = u, s[a[1] = 0] = u, s[1] = n, e && (ee(a, a, e), ee(s, s, e)), new eh({
					shape: {
						x1: a[0],
						y1: a[1],
						x2: s[0],
						y2: s[1]
					},
					style: i,
					z2: 2,
					autoBatch: !0,
					silent: !0
				}));
			tc(u.shape, u.style.lineWidth), u.anid = r + "_" + t[l].tickValue, o.push(u)
		}
		return o
	}

	function Jw(t, e) {
		var h, c, r, p, d, f, o, n = {
			axesInfo: {},
			seriesInvolved: !1,
			coordSysAxesInfo: {},
			coordSysMap: {}
		};
		return h = n, e = e, r = (c = t).getComponent("tooltip"), p = c.getComponent("axisPointer"), d = p.get(
			"link", !0) || [], f = [], E(e.getCoordinateSystems(), function(s) {
			var l, u, t, e, n;

			function i(t, e, n) {
				var i, r, o = n.model.getModel("axisPointer", p),
					a = o.get("show");
				a && ("auto" !== a || t || nS(o)) && (null == e && (e = o.get("triggerTooltip")), a = (o =
					t ? function(t, e, n, i, r, o) {
						var a = e.getModel("axisPointer"),
							s = {};
						E(["type", "snap", "lineStyle", "shadowStyle", "label", "animation",
								"animationDurationUpdate", "animationEasingUpdate", "z"
							], function(t) {
								s[t] = y(a.get(t))
							}), s.snap = "category" !== t.type && !!o, "cross" === a.get("type") &&
							(s.type = "line");
						e = s.label || (s.label = {});
						null == e.show && (e.show = !1), "cross" === r && (r = a.get(["label",
							"show"
						]), e.show = null == r || r, o || (r = s.lineStyle = a.get(
							"crossStyle")) && z(e, r.textStyle));
						return t.model.getModel("axisPointer", new Vc(s, n, i))
					}(n, u, p, c, t, e) : o).get("snap"), t = o.get("triggerEmphasis"), i = iS(n
					.model), r = e || a || "category" === n.type, e = h.axesInfo[i] = {
					key: i,
					axis: n,
					coordSys: s,
					axisPointerModel: o,
					triggerTooltip: e,
					triggerEmphasis: t,
					involveSeries: r,
					snap: a,
					useHandle: nS(o),
					seriesModels: [],
					linkGroup: null
				}, l[i] = e, h.seriesInvolved = h.seriesInvolved || r, null != (t = function(t, e) {
					for (var n = e.model, i = e.dim, r = 0; r < t.length; r++) {
						var o = t[r] || {};
						if (tS(o[i + "AxisId"], n.id) || tS(o[i + "AxisIndex"], n
								.componentIndex) || tS(o[i + "AxisName"], n.name)) return r
					}
				}(d, n))) && ((a = f[t] || (f[t] = {
					axesInfo: {}
				})).axesInfo[i] = e, a.mapper = d[t].mapper, e.linkGroup = a)
			}
			s.axisPointerEnabled && (t = iS(s.model), l = h.coordSysAxesInfo[t] = {}, u = (h.coordSysMap[
					t] = s).model.getModel("tooltip", r), E(s.getAxes(), S(i, !1, null)), s
				.getTooltipAxes) && r && u.get("show") && (t = "axis" === u.get("trigger"), e =
				"cross" === u.get(["axisPointer", "type"]), n = s.getTooltipAxes(u.get(["axisPointer",
					"axis"
				])), (t || e) && E(n.baseAxes, S(i, !e || "cross", t)), e) && E(n.otherAxes, S(i,
				"cross", !1))
		}), n.seriesInvolved && (o = n, t.eachSeries(function(n) {
			var i = n.coordinateSystem,
				t = n.get(["tooltip", "trigger"], !0),
				e = n.get(["tooltip", "show"], !0);
			i && "none" !== t && !1 !== t && "item" !== t && !1 !== e && !1 !== n.get(["axisPointer",
				"show"
			], !0) && E(o.coordSysAxesInfo[iS(i.model)], function(t) {
				var e = t.axis;
				i.getAxis(e.dim) === e && (t.seriesModels.push(n), null == t.seriesDataCount &&
					(t.seriesDataCount = 0), t.seriesDataCount += n.getData().count())
			})
		})), n
	}

	function tS(t, e) {
		return "all" === t || F(t) && 0 <= C(t, e) || t === e
	}

	function eS(t) {
		var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
		return e && e.axesInfo[iS(t)]
	}

	function nS(t) {
		return !!t.get(["handle", "show"])
	}

	function iS(t) {
		return t.type + "||" + t.id
	}
	var rS, oS = {},
		aS = (u(sS, rS = Qg), sS.prototype.render = function(t, e, n, i) {
			var r, o, a, s, l, u;
			this.axisPointerClass && (r = eS(r = t)) && (l = r.axisPointerModel, o = r.axis.scale, a = l.option,
					u = l.get("status"), null != (s = l.get("value")) && (s = o.parse(s)), l = nS(l), null ==
					u && (a.status = l ? "show" : "hide"), (u = o.getExtent().slice())[0] > u[1] && u.reverse(),
					(s = null == s || s > u[1] ? u[1] : s) < u[0] && (s = u[0]), a.value = s, l) && (a.status =
					r.axis.scale.isBlank() ? "hide" : "show"), rS.prototype.render.apply(this, arguments), this
				._doUpdateAxisPointerClass(t, n, !0)
		}, sS.prototype.updateAxisPointer = function(t, e, n, i) {
			this._doUpdateAxisPointerClass(t, n, !1)
		}, sS.prototype.remove = function(t, e) {
			var n = this._axisPointer;
			n && n.remove(e)
		}, sS.prototype.dispose = function(t, e) {
			this._disposeAxisPointer(e), rS.prototype.dispose.apply(this, arguments)
		}, sS.prototype._doUpdateAxisPointerClass = function(t, e, n) {
			var i, r = sS.getAxisPointerClass(this.axisPointerClass);
			r && ((i = (i = eS(i = t)) && i.axisPointerModel) ? (this._axisPointer || (this._axisPointer =
				new r)).render(t, i, e, n) : this._disposeAxisPointer(e))
		}, sS.prototype._disposeAxisPointer = function(t) {
			this._axisPointer && this._axisPointer.dispose(t), this._axisPointer = null
		}, sS.registerAxisPointerClass = function(t, e) {
			oS[t] = e
		}, sS.getAxisPointerClass = function(t) {
			return t && oS[t]
		}, sS.type = "axis", sS);

	function sS() {
		var t = null !== rS && rS.apply(this, arguments) || this;
		return t.type = sS.type, t
	}
	var lS = No();
	var uS, hS = ["axisLine", "axisTickLabel", "axisName"],
		cS = ["splitArea", "splitLine", "minorSplitLine"],
		yu = (u(pS, uS = aS), pS.prototype.render = function(i, t, e, n) {
			this.group.removeAll();
			var r, o, a = this._axisGroup;
			this._axisGroup = new Ur, this.group.add(this._axisGroup), i.get("show") && (o = Ew(r = i
					.getCoordSysModel(), i), o = new Yw(i, P({
					handleAutoShown: function(t) {
						for (var e = r.coordinateSystem.getCartesians(), n = 0; n < e
							.length; n++)
							if (Wv(e[n].getOtherAxis(i.axis).scale)) return !0;
						return !1
					}
				}, o)), E(hS, o.add, o), this._axisGroup.add(o.getGroup()), E(cS, function(t) {
					i.get([t, "show"]) && fS[t](this, this._axisGroup, i, r)
				}, this), n && "changeAxisOrder" === n.type && n.isInitSort || oc(a, this._axisGroup, i), uS
				.prototype.render.call(this, i, t, e, n))
		}, pS.prototype.remove = function() {
			lS(this).splitAreaColors = null
		}, pS.type = "cartesianAxis", pS);

	function pS() {
		var t = null !== uS && uS.apply(this, arguments) || this;
		return t.type = pS.type, t.axisPointerClass = "CartesianAxisPointer", t
	}
	var dS, fS = {
			splitLine: function(t, e, n, i) {
				var r = n.axis;
				if (!r.scale.isBlank())
					for (var n = n.getModel("splitLine"), o = n.getModel("lineStyle"), a = F(a = o.get(
							"color")) ? a : [a], s = i.coordinateSystem.getRect(), l = r.isHorizontal(), u = 0,
							h = r.getTicksCoords({
								tickModel: n
							}), c = [], p = [], d = o.getLineStyle(), f = 0; f < h.length; f++) {
						var g = r.toGlobalCoord(h[f].coord),
							g = (l ? (c[0] = g, c[1] = s.y, p[0] = g, p[1] = s.y + s.height) : (c[0] = s.x, c[
								1] = g, p[0] = s.x + s.width, p[1] = g), u++ % a.length),
							y = h[f].tickValue,
							y = new eh({
								anid: null != y ? "line_" + h[f].tickValue : null,
								autoBatch: !0,
								shape: {
									x1: c[0],
									y1: c[1],
									x2: p[0],
									y2: p[1]
								},
								style: z({
									stroke: a[g]
								}, d),
								silent: !0
							});
						tc(y.shape, d.lineWidth), e.add(y)
					}
			},
			minorSplitLine: function(t, e, n, i) {
				var r = n.axis,
					n = n.getModel("minorSplitLine").getModel("lineStyle"),
					o = i.coordinateSystem.getRect(),
					a = r.isHorizontal(),
					s = r.getMinorTicksCoords();
				if (s.length)
					for (var l = [], u = [], h = n.getLineStyle(), c = 0; c < s.length; c++)
						for (var p = 0; p < s[c].length; p++) {
							var d = r.toGlobalCoord(s[c][p].coord),
								d = (a ? (l[0] = d, l[1] = o.y, u[0] = d, u[1] = o.y + o.height) : (l[0] = o.x,
									l[1] = d, u[0] = o.x + o.width, u[1] = d), new eh({
									anid: "minor_line_" + s[c][p].tickValue,
									autoBatch: !0,
									shape: {
										x1: l[0],
										y1: l[1],
										x2: u[0],
										y2: u[1]
									},
									style: h,
									silent: !0
								}));
							tc(d.shape, h.lineWidth), e.add(d)
						}
			},
			splitArea: function(t, e, n, i) {
				var r = e,
					e = i,
					o = (i = n).axis;
				if (!o.scale.isBlank()) {
					var i = i.getModel("splitArea"),
						n = i.getModel("areaStyle"),
						a = n.get("color"),
						s = e.coordinateSystem.getRect(),
						l = o.getTicksCoords({
							tickModel: i,
							clamp: !0
						});
					if (l.length) {
						var u = a.length,
							h = lS(t).splitAreaColors,
							c = N(),
							p = 0;
						if (h)
							for (var d = 0; d < l.length; d++) {
								var f = h.get(l[d].tickValue);
								if (null != f) {
									p = (f + (u - 1) * d) % u;
									break
								}
							}
						for (var g = o.toGlobalCoord(l[0].coord), y = n.getAreaStyle(), a = F(a) ? a : [a], d =
								1; d < l.length; d++) {
							var m = o.toGlobalCoord(l[d].coord),
								v = void 0,
								_ = void 0,
								x = void 0,
								b = void 0,
								g = o.isHorizontal() ? (v = g, _ = s.y, b = s.height, v + (x = m - v)) : (v = s
									.x, _ = g, x = s.width, _ + (b = m - _)),
								m = l[d - 1].tickValue;
							null != m && c.set(m, p), r.add(new Ns({
								anid: null != m ? "area_" + m : null,
								shape: {
									x: v,
									y: _,
									width: x,
									height: b
								},
								style: z({
									fill: a[p]
								}, y),
								autoBatch: !0,
								silent: !0
							})), p = (p + 1) % u
						}
						lS(t).splitAreaColors = c
					}
				}
			}
		},
		gS = (u(yS, dS = yu), yS.type = "xAxis", yS);

	function yS() {
		var t = null !== dS && dS.apply(this, arguments) || this;
		return t.type = yS.type, t
	}
	u(_S, mS = yu), _S.type = "yAxis";
	var mS, vS = _S;

	function _S() {
		var t = null !== mS && mS.apply(this, arguments) || this;
		return t.type = gS.type, t
	}
	u(wS, xS = Qg), wS.prototype.render = function(t, e) {
		this.group.removeAll(), t.get("show") && this.group.add(new Ns({
			shape: t.coordinateSystem.getRect(),
			style: z({
				fill: t.get("backgroundColor")
			}, t.getItemStyle()),
			silent: !0,
			z2: -1
		}))
	}, wS.type = "grid";
	var xS, bS = wS;

	function wS() {
		var t = null !== xS && xS.apply(this, arguments) || this;
		return t.type = "grid", t
	}
	var SS = {
		offset: 0
	};
	Z_(function(t) {
		t.registerComponentView(bS), t.registerComponentModel(vw), t.registerCoordinateSystem("cartesian2d",
				Vw), Tw(t, "x", bw, SS), Tw(t, "y", bw, SS), t.registerComponentView(gS), t
			.registerComponentView(vS), t.registerPreprocessor(function(t) {
				t.xAxis && t.yAxis && !t.grid && (t.grid = {})
			})
	});
	u(IS, MS = g), IS.type = "title", IS.defaultOption = {
		z: 6,
		show: !0,
		text: "",
		target: "blank",
		subtext: "",
		subtarget: "blank",
		left: 0,
		top: 0,
		backgroundColor: "rgba(0,0,0,0)",
		borderColor: "#ccc",
		borderWidth: 0,
		padding: 5,
		itemGap: 10,
		textStyle: {
			fontSize: 18,
			fontWeight: "bold",
			color: "#464646"
		},
		subtextStyle: {
			fontSize: 12,
			color: "#6E7079"
		}
	};
	var MS, TS = IS;

	function IS() {
		var t = null !== MS && MS.apply(this, arguments) || this;
		return t.type = IS.type, t.layoutMode = {
			type: "box",
			ignoreSize: !0
		}, t
	}
	u(kS, CS = Qg), kS.prototype.render = function(t, e, n) {
		var i, r, o, a, s, l, u, h, c;
		this.group.removeAll(), t.get("show") && (i = this.group, u = t.getModel("textStyle"), r = t.getModel(
				"subtextStyle"), h = t.get("textAlign"), c = R(t.get("textBaseline"), t.get(
				"textVerticalAlign")), s = (u = new Vs({
				style: _c(u, {
					text: t.get("text"),
					fill: u.getTextColor()
				}, {
					disableBox: !0
				}),
				z2: 10
			})).getBoundingRect(), l = t.get("subtext"), r = new Vs({
				style: _c(r, {
					text: l,
					fill: r.getTextColor(),
					y: s.height + t.get("itemGap"),
					verticalAlign: "top"
				}, {
					disableBox: !0
				}),
				z2: 10
			}), o = t.get("link"), a = t.get("sublink"), s = t.get("triggerEvent", !0), u.silent = !o && !s,
			r.silent = !a && !s, o && u.on("click", function() {
				Rp(o, "_" + t.get("target"))
			}), a && r.on("click", function() {
				Rp(a, "_" + t.get("subtarget"))
			}), k(u).eventData = k(r).eventData = s ? {
				componentType: "title",
				componentIndex: t.componentIndex
			} : null, i.add(u), l && i.add(r), s = i.getBoundingRect(), (l = t.getBoxLayoutParams()).width =
			s.width, l.height = s.height, l = Vp(l, {
				width: n.getWidth(),
				height: n.getHeight()
			}, t.get("padding")), h || ("right" === (h = "middle" === (h = t.get("left") || t.get(
				"right")) ? "center" : h) ? l.x += l.width : "center" === h && (l.x += l.width / 2)), c || (
				"bottom" === (c = "center" === (c = t.get("top") || t.get("bottom")) ? "middle" : c) ? l
				.y += l.height : "middle" === c && (l.y += l.height / 2), c = c || "top"), i.x = l.x, i.y =
			l.y, i.markRedraw(), u.setStyle(n = {
				align: h,
				verticalAlign: c
			}), r.setStyle(n), s = i.getBoundingRect(), u = l.margin, (h = t.getItemStyle(["color",
				"opacity"
			])).fill = t.get("backgroundColor"), c = new Ns({
				shape: {
					x: s.x - u[3],
					y: s.y - u[0],
					width: s.width + u[1] + u[3],
					height: s.height + u[0] + u[2],
					r: t.get("borderRadius")
				},
				style: h,
				subPixelOptimize: !0,
				silent: !0
			}), i.add(c))
	}, kS.type = "title";
	var CS, DS = kS;

	function kS() {
		var t = null !== CS && CS.apply(this, arguments) || this;
		return t.type = kS.type, t
	}
	Z_(function(t) {
		t.registerComponentModel(TS), t.registerComponentView(DS)
	});
	u(PS, AS = g), PS.prototype.init = function(t, e, n) {
		this.mergeDefaultAndTheme(t, n), t.selected = t.selected || {}, this._updateSelector(t)
	}, PS.prototype.mergeOption = function(t, e) {
		AS.prototype.mergeOption.call(this, t, e), this._updateSelector(t)
	}, PS.prototype._updateSelector = function(t) {
		var n = t.selector,
			i = this.ecModel;
		F(n = !0 === n ? t.selector = ["all", "inverse"] : n) && E(n, function(t, e) {
			V(t) && (t = {
				type: t
			}), n[e] = d(t, (e = i, "all" === (t = t.type) ? {
				type: "all",
				title: e.getLocaleModel().get(["legend", "selector", "all"])
			} : "inverse" === t ? {
				type: "inverse",
				title: e.getLocaleModel().get(["legend", "selector", "inverse"])
			} : void 0))
		})
	}, PS.prototype.optionUpdated = function() {
		this._updateData(this.ecModel);
		var t = this._data;
		if (t[0] && "single" === this.get("selectedMode")) {
			for (var e = !1, n = 0; n < t.length; n++) {
				var i = t[n].get("name");
				if (this.isSelected(i)) {
					this.select(i), e = !0;
					break
				}
			}
			e || this.select(t[0].get("name"))
		}
	}, PS.prototype._updateData = function(i) {
		var r = [],
			o = [],
			t = (i.eachRawSeries(function(t) {
				var e, n = t.name;
				o.push(n), t.legendVisualProvider && (n = t.legendVisualProvider.getAllNames(), i
						.isSeriesFiltered(t) || (o = o.concat(n)), n.length) ? r = r.concat(n) : e = !0,
					e && Lo(t) && r.push(t.name)
			}), this._availableNames = o, this.get("data") || r),
			e = N(),
			t = B(t, function(t) {
				return (V(t) || G(t)) && (t = {
					name: t
				}), e.get(t.name) ? null : (e.set(t.name, !0), new Vc(t, this, this.ecModel))
			}, this);
		this._data = ht(t, function(t) {
			return !!t
		})
	}, PS.prototype.getData = function() {
		return this._data
	}, PS.prototype.select = function(t) {
		var e = this.option.selected;
		"single" === this.get("selectedMode") && E(this._data, function(t) {
			e[t.get("name")] = !1
		}), e[t] = !0
	}, PS.prototype.unSelect = function(t) {
		"single" !== this.get("selectedMode") && (this.option.selected[t] = !1)
	}, PS.prototype.toggleSelected = function(t) {
		var e = this.option.selected;
		e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? "unSelect" : "select"](t)
	}, PS.prototype.allSelect = function() {
		var t = this._data,
			e = this.option.selected;
		E(t, function(t) {
			e[t.get("name", !0)] = !0
		})
	}, PS.prototype.inverseSelect = function() {
		var t = this._data,
			e = this.option.selected;
		E(t, function(t) {
			t = t.get("name", !0);
			e.hasOwnProperty(t) || (e[t] = !0), e[t] = !e[t]
		})
	}, PS.prototype.isSelected = function(t) {
		var e = this.option.selected;
		return !(e.hasOwnProperty(t) && !e[t]) && 0 <= C(this._availableNames, t)
	}, PS.prototype.getOrient = function() {
		return "vertical" === this.get("orient") ? {
			index: 1,
			name: "vertical"
		} : {
			index: 0,
			name: "horizontal"
		}
	}, PS.type = "legend.plain", PS.dependencies = ["series"], PS.defaultOption = {
		z: 4,
		show: !0,
		orient: "horizontal",
		left: "center",
		top: 0,
		align: "auto",
		backgroundColor: "rgba(0,0,0,0)",
		borderColor: "#ccc",
		borderRadius: 0,
		borderWidth: 0,
		padding: 5,
		itemGap: 10,
		itemWidth: 25,
		itemHeight: 14,
		symbolRotate: "inherit",
		symbolKeepAspect: !0,
		inactiveColor: "#ccc",
		inactiveBorderColor: "#ccc",
		inactiveBorderWidth: "auto",
		itemStyle: {
			color: "inherit",
			opacity: "inherit",
			borderColor: "inherit",
			borderWidth: "auto",
			borderCap: "inherit",
			borderJoin: "inherit",
			borderDashOffset: "inherit",
			borderMiterLimit: "inherit"
		},
		lineStyle: {
			width: "auto",
			color: "inherit",
			inactiveColor: "#ccc",
			inactiveWidth: 2,
			opacity: "inherit",
			type: "inherit",
			cap: "inherit",
			join: "inherit",
			dashOffset: "inherit",
			miterLimit: "inherit"
		},
		textStyle: {
			color: "#333"
		},
		selectedMode: !0,
		selector: !1,
		selectorLabel: {
			show: !0,
			borderRadius: 10,
			padding: [3, 5, 3, 5],
			fontSize: 12,
			fontFamily: "sans-serif",
			color: "#666",
			borderWidth: 1,
			borderColor: "#666"
		},
		emphasis: {
			selectorLabel: {
				show: !0,
				color: "#eee",
				backgroundColor: "#666"
			}
		},
		selectorPosition: "auto",
		selectorItemGap: 7,
		selectorButtonGap: 10,
		tooltip: {
			show: !1
		}
	};
	var AS, LS = PS;

	function PS() {
		var t = null !== AS && AS.apply(this, arguments) || this;
		return t.type = PS.type, t.layoutMode = {
			type: "box",
			ignoreSize: !0
		}, t
	}
	var OS, RS = S,
		NS = E,
		ES = Ur,
		zS = (u(BS, OS = Qg), BS.prototype.init = function() {
			this.group.add(this._contentGroup = new ES), this.group.add(this._selectorGroup = new ES), this
				._isFirstRender = !0
		}, BS.prototype.getContentGroup = function() {
			return this._contentGroup
		}, BS.prototype.getSelectorGroup = function() {
			return this._selectorGroup
		}, BS.prototype.render = function(t, e, n) {
			var i, r, o, a, s, l = this._isFirstRender;
			this._isFirstRender = !1, this.resetInner(), t.get("show", !0) && (r = t.get("align"), i = t.get(
					"orient"), r && "auto" !== r || (r = "right" === t.get("left") && "vertical" === i ?
					"right" : "left"), a = t.get("selector", !0), s = t.get("selectorPosition", !0), this
				.renderInner(r, t, e, n, a, i, s = !a || s && "auto" !== s ? s : "horizontal" === i ?
					"end" : "start"), o = Vp(e = t.getBoxLayoutParams(), i = {
					width: n.getWidth(),
					height: n.getHeight()
				}, n = t.get("padding")), o = Vp(z({
					width: (r = this.layoutInner(t, r, o, l, a, s)).width,
					height: r.height
				}, e), i, n), this.group.x = o.x - r.x, this.group.y = o.y - r.y, this.group.markRedraw(),
				this.group.add(this._backgroundEl = (l = r, s = Cp((a = t).get("padding")), (e = a
						.getItemStyle(["color", "opacity"])).fill = a.get("backgroundColor"), l =
					new Ns({
						shape: {
							x: l.x - s[3],
							y: l.y - s[0],
							width: l.width + s[1] + s[3],
							height: l.height + s[0] + s[2],
							r: a.get("borderRadius")
						},
						style: e,
						silent: !0,
						z2: -1
					}))))
		}, BS.prototype.resetInner = function() {
			this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl),
				this.getSelectorGroup().removeAll()
		}, BS.prototype.renderInner = function(s, l, u, h, t, e, n) {
			var c = this.getContentGroup(),
				p = N(),
				d = l.get("selectedMode"),
				f = [];
			u.eachRawSeries(function(t) {
				t.get("legendHoverLink") || f.push(t.id)
			}), NS(l.getData(), function(r, o) {
				var e, t, n, i, a = r.get("name");
				this.newlineDisabled || "" !== a && "\n" !== a ? (e = u.getSeriesByName(a)[0], p.get(
					a) || (e ? (i = (n = e.getData()).getVisual("legendLineStyle") || {}, t = n
						.getVisual("legendIcon"), n = n.getVisual("style"), (i = this
							._createItem(e, a, o, r, l, s, i, n, t, d, h)).on("click", RS(FS, a,
							null, h, f)).on("mouseover", RS(GS, e.name, null, h, f)).on(
							"mouseout", RS(HS, e.name, null, h, f)), u.ssr && i.eachChild(
							function(t) {
								t = k(t);
								t.seriesIndex = e.seriesIndex, t.dataIndex = o, t.ssrType =
									"legend"
							}), p.set(a, !0)) : u.eachRawSeries(function(e) {
						var t, n, i;
						p.get(a) || e.legendVisualProvider && (n = e.legendVisualProvider)
							.containName(a) && (i = n.indexOfName(a), t = n.getItemVisual(i,
								"style"), n = n.getItemVisual(i, "legendIcon"), (i = yi(
								t.fill)) && 0 === i[3] && (i[3] = .2, t = P(P({}, t), {
								fill: Si(i, "rgba")
							})), (i = this._createItem(e, a, o, r, l, s, {}, t, n, d,
								h)).on("click", RS(FS, null, a, h, f)).on("mouseover",
								RS(GS, null, a, h, f)).on("mouseout", RS(HS, null, a, h,
								f)), u.ssr && i.eachChild(function(t) {
								t = k(t);
								t.seriesIndex = e.seriesIndex, t.dataIndex = o, t
									.ssrType = "legend"
							}), p.set(a, !0))
					}, this))) : ((n = new ES).newline = !0, c.add(n))
			}, this), t && this._createSelector(t, l, h, e, n)
		}, BS.prototype._createSelector = function(t, i, r, e, n) {
			var o = this.getSelectorGroup();
			NS(t, function(t) {
				var e = t.type,
					n = new Vs({
						style: {
							x: 0,
							y: 0,
							align: "center",
							verticalAlign: "middle"
						},
						onclick: function() {
							r.dispatchAction({
								type: "all" === e ? "legendAllSelect" :
									"legendInverseSelect"
							})
						}
					});
				o.add(n), mc(n, {
					normal: i.getModel("selectorLabel"),
					emphasis: i.getModel(["emphasis", "selectorLabel"])
				}, {
					defaultText: t.title
				}), Vl(n)
			})
		}, BS.prototype._createItem = function(t, e, n, i, r, o, a, s, l, u, h) {
			var c = t.visualDrawType,
				p = r.get("itemWidth"),
				d = r.get("itemHeight"),
				f = r.isSelected(e),
				g = i.get("symbolRotate"),
				y = i.get("symbolKeepAspect"),
				m = i.get("icon"),
				a = function(t, e, n, i, r, o, a) {
					function s(n, i) {
						"auto" === n.lineWidth && (n.lineWidth = 0 < i.lineWidth ? 2 : 0), NS(n, function(t,
						e) {
							"inherit" === n[e] && (n[e] = i[e])
						})
					}
					var l = e.getModel("itemStyle"),
						u = l.getItemStyle(),
						t = 0 === t.lastIndexOf("empty", 0) ? "fill" : "stroke",
						l = l.getShallow("decal");
					u.decal = l && "inherit" !== l ? Bm(l, a) : i.decal, "inherit" === u.fill && (u.fill = i[
					r]);
					"inherit" === u.stroke && (u.stroke = i[t]);
					"inherit" === u.opacity && (u.opacity = ("fill" === r ? i : n).opacity);
					s(u, i);
					l = e.getModel("lineStyle"), a = l.getLineStyle();
					s(a, n), "auto" === u.fill && (u.fill = i.fill), "auto" === u.stroke && (u.stroke = i.fill),
						"auto" === a.stroke && (a.stroke = i.fill), o || (r = e.get("inactiveBorderWidth"), n =
							u[t], u.lineWidth = "auto" === r ? 0 < i.lineWidth && n ? 2 : 0 : u.lineWidth, u
							.fill = e.get("inactiveColor"), u.stroke = e.get("inactiveBorderColor"), a.stroke =
							l.get("inactiveColor"), a.lineWidth = l.get("inactiveWidth"));
					return {
						itemStyle: u,
						lineStyle: a
					}
				}(l = m || l || "roundRect", i, a, s, c, f, h),
				s = new ES,
				c = i.getModel("textStyle"),
				m = (!D(t.getLegendIcon) || m && "inherit" !== m ? (h = "inherit" === m && t.getData()
					.getVisual("symbol") ? "inherit" === g ? t.getData().getVisual("symbolRotate") : g : 0,
					s.add(function(t) {
						var e = t.icon || "roundRect",
							n = sm(e, 0, 0, t.itemWidth, t.itemHeight, t.itemStyle.fill, t
								.symbolKeepAspect);
						n.setStyle(t.itemStyle), n.rotation = (t.iconRotate || 0) * Math.PI / 180, n
							.setOrigin([t.itemWidth / 2, t.itemHeight / 2]), -1 < e.indexOf("empty") &&
							(n.style.stroke = n.style.fill, n.style.fill = "#fff", n.style.lineWidth =
								2);
						return n
					}({
						itemWidth: p,
						itemHeight: d,
						icon: l,
						iconRotate: h,
						itemStyle: a.itemStyle,
						lineStyle: a.lineStyle,
						symbolKeepAspect: y
					}))) : s.add(t.getLegendIcon({
					itemWidth: p,
					itemHeight: d,
					icon: l,
					iconRotate: g,
					itemStyle: a.itemStyle,
					lineStyle: a.lineStyle,
					symbolKeepAspect: y
				})), "left" === o ? p + 5 : -5),
				h = o,
				t = r.get("formatter"),
				l = e,
				g = (V(t) && t ? l = t.replace("{name}", null != e ? e : "") : D(t) && (l = t(e)), f ? c
					.getTextColor() : i.get("inactiveColor")),
				a = (s.add(new Vs({
					style: _c(c, {
						text: l,
						x: m,
						y: d / 2,
						fill: g,
						align: h,
						verticalAlign: "middle"
					}, {
						inheritColor: g
					})
				})), new Ns({
					shape: s.getBoundingRect(),
					style: {
						fill: "transparent"
					}
				})),
				y = i.getModel("tooltip");
			return y.get("show") && hc({
				el: a,
				componentModel: r,
				itemName: e,
				itemTooltipOption: y.option
			}), s.add(a), s.eachChild(function(t) {
				t.silent = !0
			}), a.silent = !u, this.getContentGroup().add(s), Vl(s), s.__legendDataIndex = n, s
		}, BS.prototype.layoutInner = function(t, e, n, i, r, o) {
			var a, s, l, u, h, c = this.getContentGroup(),
				p = this.getSelectorGroup(),
				n = (Fp(t.get("orient"), c, t.get("itemGap"), n.width, n.height), c.getBoundingRect()),
				d = [-n.x, -n.y];
			return p.markRedraw(), c.markRedraw(), r ? (Fp("horizontal", p, t.get("selectorItemGap", !0)), a = [
					-(r = p.getBoundingRect()).x, -r.y
				], s = t.get("selectorButtonGap", !0), l = 0 === (t = t.getOrient().index) ? "width" :
				"height", u = 0 === t ? "height" : "width", h = 0 === t ? "y" : "x", "end" === o ? a[t] +=
				n[l] + s : d[t] += r[l] + s, a[1 - t] += n[u] / 2 - r[u] / 2, p.x = a[0], p.y = a[1], c.x =
				d[0], c.y = d[1], (o = {
					x: 0,
					y: 0
				})[l] = n[l] + s + r[l], o[u] = Math.max(n[u], r[u]), o[h] = Math.min(0, r[h] + a[1 - t]), o
				) : (c.x = d[0], c.y = d[1], this.group.getBoundingRect())
		}, BS.prototype.remove = function() {
			this.getContentGroup().removeAll(), this._isFirstRender = !0
		}, BS.type = "legend.plain", BS);

	function BS() {
		var t = null !== OS && OS.apply(this, arguments) || this;
		return t.type = BS.type, t.newlineDisabled = !1, t
	}

	function FS(t, e, n, i) {
		HS(t, e, n, i), n.dispatchAction({
			type: "legendToggleSelect",
			name: null != t ? t : e
		}), GS(t, e, n, i)
	}

	function VS(t) {
		for (var e, n = t.getZr().storage.getDisplayList(), i = 0, r = n.length; i < r && !(e = n[i].states
				.emphasis);) i++;
		return e && e.hoverLayer
	}

	function GS(t, e, n, i) {
		VS(n) || n.dispatchAction({
			type: "highlight",
			seriesName: t,
			name: e,
			excludeSeriesId: i
		})
	}

	function HS(t, e, n, i) {
		VS(n) || n.dispatchAction({
			type: "downplay",
			seriesName: t,
			name: e,
			excludeSeriesId: i
		})
	}

	function WS(t) {
		var n = t.findComponents({
			mainType: "legend"
		});
		n && n.length && t.filterSeries(function(t) {
			for (var e = 0; e < n.length; e++)
				if (!n[e].isSelected(t.name)) return !1;
			return !0
		})
	}

	function US(t, e, n) {
		var i, r = {},
			o = "toggleSelected" === t;
		return n.eachComponent("legend", function(n) {
			o && null != i ? n[i ? "select" : "unSelect"](e.name) : "allSelect" === t || "inverseSelect" ===
				t ? n[t]() : (n[t](e.name), i = n.isSelected(e.name)), E(n.getData(), function(t) {
					var e, t = t.get("name");
					"\n" !== t && "" !== t && (e = n.isSelected(t), r.hasOwnProperty(t) ? r[t] = r[t] &&
						e : r[t] = e)
				})
		}), "allSelect" === t || "inverseSelect" === t ? {
			selected: r
		} : {
			name: e.name,
			selected: r
		}
	}

	function XS(t) {
		t.registerComponentModel(LS), t.registerComponentView(zS), t.registerProcessor(t.PRIORITY.PROCESSOR
				.SERIES_FILTER, WS), t.registerSubTypeDefaulter("legend", function() {
				return "plain"
			}), (t = t).registerAction("legendToggleSelect", "legendselectchanged", S(US, "toggleSelected")), t
			.registerAction("legendAllSelect", "legendselectall", S(US, "allSelect")), t.registerAction(
				"legendInverseSelect", "legendinverseselect", S(US, "inverseSelect")), t.registerAction(
				"legendSelect", "legendselected", S(US, "select")), t.registerAction("legendUnSelect",
				"legendunselected", S(US, "unSelect"))
	}
	u(ZS, YS = LS), ZS.prototype.setScrollDataIndex = function(t) {
		this.option.scrollDataIndex = t
	}, ZS.prototype.init = function(t, e, n) {
		var i = Wp(t);
		YS.prototype.init.call(this, t, e, n), jS(this, t, i)
	}, ZS.prototype.mergeOption = function(t, e) {
		YS.prototype.mergeOption.call(this, t, e), jS(this, this.option, t)
	}, ZS.type = "legend.scroll", ZS.defaultOption = Uc(LS.defaultOption, {
		scrollDataIndex: 0,
		pageButtonItemGap: 5,
		pageButtonGap: null,
		pageButtonPosition: "end",
		pageFormatter: "{current}/{total}",
		pageIcons: {
			horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"],
			vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"]
		},
		pageIconColor: "#2f4554",
		pageIconInactiveColor: "#aaa",
		pageIconSize: 15,
		pageTextStyle: {
			color: "#333"
		},
		animationDurationUpdate: 800
	});
	var YS, qS = ZS;

	function ZS() {
		var t = null !== YS && YS.apply(this, arguments) || this;
		return t.type = ZS.type, t
	}

	function jS(t, e, n) {
		var i = [1, 1];
		i[t.getOrient().index] = 0, Hp(e, n, {
			type: "box",
			ignoreSize: !!i
		})
	}
	var KS, $S = Ur,
		QS = ["width", "height"],
		JS = ["x", "y"],
		tM = (u(eM, KS = zS), eM.prototype.init = function() {
			KS.prototype.init.call(this), this.group.add(this._containerGroup = new $S), this._containerGroup
				.add(this.getContentGroup()), this.group.add(this._controllerGroup = new $S)
		}, eM.prototype.resetInner = function() {
			KS.prototype.resetInner.call(this), this._controllerGroup.removeAll(), this._containerGroup
				.removeClipPath(), this._containerGroup.__rectSize = null
		}, eM.prototype.renderInner = function(t, i, e, r, n, o, a) {
			var s = this,
				l = (KS.prototype.renderInner.call(this, t, i, e, r, n, o, a), this._controllerGroup),
				t = i.get("pageIconSize", !0),
				u = F(t) ? t : [t, t],
				e = (h("pagePrev", 0), i.getModel("pageTextStyle"));

			function h(t, e) {
				var n = t + "DataIndex",
					e = lc(i.get("pageIcons", !0)[i.getOrient().name][e], {
						onclick: pt(s._pageGo, s, n, i, r)
					}, {
						x: -u[0] / 2,
						y: -u[1] / 2,
						width: u[0],
						height: u[1]
					});
				e.name = t, l.add(e)
			}
			l.add(new Vs({
				name: "pageText",
				style: {
					text: "xx/xx",
					fill: e.getTextColor(),
					font: e.getFont(),
					verticalAlign: "middle",
					align: "center"
				},
				silent: !0
			})), h("pageNext", 1)
		}, eM.prototype.layoutInner = function(t, e, n, i, r, o) {
			var a = this.getSelectorGroup(),
				s = t.getOrient().index,
				l = QS[s],
				u = JS[s],
				h = QS[1 - s],
				c = JS[1 - s],
				p = (r && Fp("horizontal", a, t.get("selectorItemGap", !0)), t.get("selectorButtonGap", !0)),
				d = a.getBoundingRect(),
				f = [-d.x, -d.y],
				g = y(n),
				n = (r && (g[l] = n[l] - d[l] - p), this._layoutContentAndController(t, i, g, s, l, h, c, u));
			return r && ("end" === o ? f[s] += n[l] + p : (t = d[l] + p, f[s] -= t, n[u] -= t), n[l] += d[l] +
				p, f[1 - s] += n[c] + n[h] / 2 - d[h] / 2, n[h] = Math.max(n[h], d[h]), n[c] = Math.min(n[
					c], d[c] + f[1 - s]), a.x = f[0], a.y = f[1], a.markRedraw()), n
		}, eM.prototype._layoutContentAndController = function(t, e, n, i, r, o, a, s) {
			var l = this.getContentGroup(),
				u = this._containerGroup,
				h = this._controllerGroup,
				c = (Fp(t.get("orient"), l, t.get("itemGap"), i ? n.width : null, i ? null : n.height), Fp(
					"horizontal", h, t.get("pageButtonItemGap", !0)), l.getBoundingRect()),
				p = h.getBoundingRect(),
				d = this._showController = c[r] > n[r],
				f = [-c.x, -c.y],
				e = (e || (f[i] = l[s]), [0, 0]),
				s = [-p.x, -p.y],
				g = R(t.get("pageButtonGap", !0), t.get("itemGap", !0)),
				f = (d && ("end" === t.get("pageButtonPosition", !0) ? s[i] += n[r] - p[r] : e[i] += p[r] + g),
					s[1 - i] += c[o] / 2 - p[o] / 2, l.setPosition(f), u.setPosition(e), h.setPosition(s), {
						x: 0,
						y: 0
					}),
				c = (f[r] = (d ? n : c)[r], f[o] = Math.max(c[o], p[o]), f[a] = Math.min(0, p[a] + s[1 - i]), u
					.__rectSize = n[r], d ? ((e = {
						x: 0,
						y: 0
					})[r] = Math.max(n[r] - p[r] - g, 0), e[o] = f[o], u.setClipPath(new Ns({
						shape: e
					})), u.__rectSize = e[r]) : h.eachChild(function(t) {
						t.attr({
							invisible: !0,
							silent: !0
						})
					}), this._getPageInfo(t));
			return null != c.pageIndex && Rh(l, {
				x: c.contentPosition[0],
				y: c.contentPosition[1]
			}, d ? t : null), this._updatePageInfoView(t, c), f
		}, eM.prototype._pageGo = function(t, e, n) {
			t = this._getPageInfo(e)[t];
			null != t && n.dispatchAction({
				type: "legendScroll",
				scrollDataIndex: t,
				legendId: e.id
			})
		}, eM.prototype._updatePageInfoView = function(n, i) {
			var r = this._controllerGroup,
				t = (E(["pagePrev", "pageNext"], function(t) {
					var e = null != i[t + "DataIndex"],
						t = r.childOfName(t);
					t && (t.setStyle("fill", e ? n.get("pageIconColor", !0) : n.get(
						"pageIconInactiveColor", !0)), t.cursor = e ? "pointer" : "default")
				}), r.childOfName("pageText")),
				e = n.get("pageFormatter"),
				o = i.pageIndex,
				o = null != o ? o + 1 : 0,
				a = i.pageCount;
			t && e && t.setStyle("text", V(e) ? e.replace("{current}", null == o ? "" : o + "").replace(
				"{total}", null == a ? "" : a + "") : e({
				current: o,
				total: a
			}))
		}, eM.prototype._getPageInfo = function(t) {
			var e = t.get("scrollDataIndex", !0),
				n = this.getContentGroup(),
				i = this._containerGroup.__rectSize,
				t = t.getOrient().index,
				r = QS[t],
				o = JS[t],
				e = this._findTargetItemIndex(e),
				a = n.children(),
				s = a[e],
				l = a.length,
				u = l ? 1 : 0,
				h = {
					contentPosition: [n.x, n.y],
					pageCount: u,
					pageIndex: u - 1,
					pagePrevDataIndex: null,
					pageNextDataIndex: null
				};
			if (s) {
				n = g(s);
				h.contentPosition[t] = -n.s;
				for (var c = e + 1, p = n, d = n, f = null; c <= l; ++c)(!(f = g(a[c])) && d.e > p.s + i || f &&
					!y(f, p.s)) && (p = d.i > p.i ? d : f) && (null == h.pageNextDataIndex && (h
					.pageNextDataIndex = p.i), ++h.pageCount), d = f;
				for (c = e - 1, p = n, d = n, f = null; - 1 <= c; --c)(f = g(a[c])) && y(d, f.s) || !(p.i < d
					.i) || (d = p, null == h.pagePrevDataIndex && (h.pagePrevDataIndex = p.i), ++h.pageCount, ++
						h.pageIndex), p = f
			}
			return h;

			function g(t) {
				var e, n;
				if (t) return {
					s: n = (e = t.getBoundingRect())[o] + t[o],
					e: n + e[r],
					i: t.__legendDataIndex
				}
			}

			function y(t, e) {
				return t.e >= e && t.s <= e + i
			}
		}, eM.prototype._findTargetItemIndex = function(n) {
			var i, r;
			return this._showController ? (this.getContentGroup().eachChild(function(t, e) {
				t = t.__legendDataIndex;
				null == r && null != t && (r = e), t === n && (i = e)
			}), null != i ? i : r) : 0
		}, eM.type = "legend.scroll", eM);

	function eM() {
		var t = null !== KS && KS.apply(this, arguments) || this;
		return t.type = eM.type, t.newlineDisabled = !0, t._currentIndex = 0, t
	}
	Z_(function(t) {
		Z_(XS), t.registerComponentModel(qS), t.registerComponentView(tM), t.registerAction("legendScroll",
			"legendscroll",
			function(t, e) {
				var n = t.scrollDataIndex;
				null != n && e.eachComponent({
					mainType: "legend",
					subType: "scroll",
					query: t
				}, function(t) {
					t.setScrollDataIndex(n)
				})
			})
	});
	var nM = No(),
		iM = y,
		rM = pt;

	function oM() {
		this._dragging = !1, this.animationThreshold = 15
	}

	function aM(t, e, n, i) {
		! function n(i, t) {
			{
				var r;
				return O(i) && O(t) ? (r = !0, E(t, function(t, e) {
					r = r && n(i[e], t)
				}), !!r) : i === t
			}
		}(nM(n).lastProp, i) && (nM(n).lastProp = i, e ? Rh(n, i, t) : (n.stopAnimation(), n.attr(i)))
	}

	function sM(t, e) {
		t[e.get(["label", "show"]) ? "show" : "hide"]()
	}

	function lM(t) {
		return {
			x: t.x || 0,
			y: t.y || 0,
			rotation: t.rotation || 0
		}
	}

	function uM(t, e, n) {
		var i = e.get("z"),
			r = e.get("zlevel");
		t && t.traverse(function(t) {
			"group" !== t.type && (null != i && (t.z = i), null != r && (t.zlevel = r), t.silent = n)
		})
	}

	function hM(t, e, n, i, r) {
		var o = cM(n.get("value"), e.axis, e.ecModel, n.get("seriesDataIndices"), {
				precision: n.get(["label", "precision"]),
				formatter: n.get(["label", "formatter"])
			}),
			n = n.getModel("label"),
			a = Cp(n.get("padding") || 0),
			s = n.getFont(),
			l = Ir(o, s),
			u = r.position,
			h = l.width + a[1] + a[3],
			l = l.height + a[0] + a[2],
			c = r.align,
			c = ("right" === c && (u[0] -= h), "center" === c && (u[0] -= h / 2), r.verticalAlign),
			i = ("bottom" === c && (u[1] -= l), "middle" === c && (u[1] -= l / 2), r = u, c = h, h = l, i = (l = i)
				.getWidth(), l = l.getHeight(), r[0] = Math.min(r[0] + c, i) - c, r[1] = Math.min(r[1] + h, l) - h,
				r[0] = Math.max(r[0], 0), r[1] = Math.max(r[1], 0), n.get("backgroundColor"));
		i && "auto" !== i || (i = e.get(["axisLine", "lineStyle", "color"])), t.label = {
			x: u[0],
			y: u[1],
			style: _c(n, {
				text: o,
				font: s,
				fill: n.getTextColor(),
				padding: a,
				backgroundColor: i
			}),
			z2: 10
		}
	}

	function cM(t, e, n, i, r) {
		t = e.scale.parse(t);
		var o, a = e.scale.getLabel({
				value: t
			}, {
				precision: r.precision
			}),
			r = r.formatter;
		return r && (o = {
			value: V_(e, {
				value: t
			}),
			axisDimension: e.dim,
			axisIndex: e.index,
			seriesData: []
		}, E(i, function(t) {
			var e = n.getSeriesByIndex(t.seriesIndex),
				t = t.dataIndexInside,
				e = e && e.getDataParams(t);
			e && o.seriesData.push(e)
		}), V(r) ? a = r.replace("{value}", a) : D(r) && (a = r(o))), a
	}

	function pM(t, e, n) {
		var i = Pe();
		return ze(i, i, n.rotation), Ee(i, i, n.position), ic([t.dataToCoord(e), (n.labelOffset || 0) + (n
			.labelDirection || 1) * (n.labelMargin || 0)], i)
	}
	oM.prototype.render = function(t, e, n, i) {
		var r, o, a = e.get("value"),
			s = e.get("status");
		this._axisModel = t, this._axisPointerModel = e, this._api = n, !i && this._lastValue === a && this
			._lastStatus === s || (this._lastValue = a, this._lastStatus = s, i = this._group, r = this._handle,
				s && "hide" !== s ? (i && i.show(), r && r.show(), this.makeElOption(s = {}, a, t, e, n), (o = s
						.graphicKey) !== this._lastGraphicKey && this.clear(n), this._lastGraphicKey = o, o =
					this._moveAnimation = this.determineAnimation(t, e), i ? (o = S(aM, e, o), this
						.updatePointerEl(i, s, o), this.updateLabelEl(i, s, o, e)) : (i = this._group = new Ur,
						this.createPointerEl(i, s, t, e), this.createLabelEl(i, s, t, e), n.getZr().add(i)), uM(
						i, e, !0), this._renderHandle(a)) : (i && i.hide(), r && r.hide()))
	}, oM.prototype.remove = function(t) {
		this.clear(t)
	}, oM.prototype.dispose = function(t) {
		this.clear(t)
	}, oM.prototype.determineAnimation = function(t, e) {
		var n, i = e.get("animation"),
			r = t.axis,
			o = "category" === r.type,
			e = e.get("snap");
		return !(!e && !o) && ("auto" === i || null == i ? (n = this.animationThreshold, o && r.getBandWidth() >
				n || !!e && (o = eS(t).seriesDataCount, e = r.getExtent(), Math.abs(e[0] - e[1]) / o > n)) :
			!0 === i)
	}, oM.prototype.makeElOption = function(t, e, n, i, r) {}, oM.prototype.createPointerEl = function(t, e, n,
		i) {
		var r = e.pointer;
		r && (r = nM(t).pointerEl = new dc[r.type](iM(e.pointer)), t.add(r))
	}, oM.prototype.createLabelEl = function(t, e, n, i) {
		e.label && (e = nM(t).labelEl = new Vs(iM(e.label)), t.add(e), sM(e, i))
	}, oM.prototype.updatePointerEl = function(t, e, n) {
		t = nM(t).pointerEl;
		t && e.pointer && (t.setStyle(e.pointer.style), n(t, {
			shape: e.pointer.shape
		}))
	}, oM.prototype.updateLabelEl = function(t, e, n, i) {
		t = nM(t).labelEl;
		t && (t.setStyle(e.label.style), n(t, {
			x: e.label.x,
			y: e.label.y
		}), sM(t, i))
	}, oM.prototype._renderHandle = function(t) {
		var e, n, i, r, o, a;
		!this._dragging && this.updateHandleTransform && (e = this._axisPointerModel, n = this._api.getZr(), i =
			this._handle, r = e.getModel("handle"), a = e.get("status"), r.get("show") && a && "hide" !==
			a ? (this._handle || (o = !0, i = this._handle = lc(r.get("icon"), {
					cursor: "move",
					draggable: !0,
					onmousemove: function(t) {
						Ce(t.event)
					},
					onmousedown: rM(this._onHandleDragMove, this, 0, 0),
					drift: rM(this._onHandleDragMove, this),
					ondragend: rM(this._onHandleDragEnd, this)
				}), n.add(i)), uM(i, e, !1), i.setStyle(r.getItemStyle(null, ["color", "borderColor",
					"borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX",
					"shadowOffsetY"
				])), F(a = r.get("size")) || (a = [a, a]), i.scaleX = a[0] / 2, i.scaleY = a[1] / 2, fy(
					this, "_doDispatchAxisPointer", r.get("throttle") || 0, "fixRate"), this
				._moveHandleToValue(t, o)) : (i && n.remove(i), this._handle = null))
	}, oM.prototype._moveHandleToValue = function(t, e) {
		aM(this._axisPointerModel, !e && this._moveAnimation, this._handle, lM(this.getHandleTransform(t, this
			._axisModel, this._axisPointerModel)))
	}, oM.prototype._onHandleDragMove = function(t, e) {
		var n = this._handle;
		n && (this._dragging = !0, t = this.updateHandleTransform(lM(n), [t, e], this._axisModel, this
				._axisPointerModel), this._payloadInfo = t, n.stopAnimation(), n.attr(lM(t)), nM(n)
			.lastProp = null, this._doDispatchAxisPointer())
	}, oM.prototype._doDispatchAxisPointer = function() {
		var t, e;
		this._handle && (t = this._payloadInfo, e = this._axisModel, this._api.dispatchAction({
			type: "updateAxisPointer",
			x: t.cursorPoint[0],
			y: t.cursorPoint[1],
			tooltipOption: t.tooltipOption,
			axesInfo: [{
				axisDim: e.axis.dim,
				axisIndex: e.componentIndex
			}]
		}))
	}, oM.prototype._onHandleDragEnd = function() {
		var t;
		this._dragging = !1, this._handle && (t = this._axisPointerModel.get("value"), this._moveHandleToValue(
			t), this._api.dispatchAction({
			type: "hideTip"
		}))
	}, oM.prototype.clear = function(t) {
		this._lastValue = null, this._lastStatus = null;
		var t = t.getZr(),
			e = this._group,
			n = this._handle;
		t && e && (this._lastGraphicKey = null, e && t.remove(e), n && t.remove(n), this._group = null, this
			._handle = null, this._payloadInfo = null), gy(this, "_doDispatchAxisPointer")
	}, oM.prototype.doClear = function() {}, oM.prototype.buildLabel = function(t, e, n) {
		return {
			x: t[n = n || 0],
			y: t[1 - n],
			width: e[n],
			height: e[1 - n]
		}
	};
	u(gM, dM = oM), gM.prototype.makeElOption = function(t, e, n, i, r) {
		var o, a, s = n.axis,
			l = s.grid,
			u = i.get("type"),
			h = yM(l, s).getOtherAxis(s).getGlobalExtent(),
			c = s.toGlobalCoord(s.dataToCoord(e, !0)),
			p = (u && "none" !== u && (o = (a = i).get("type"), a = a.getModel(o + "Style"), "line" === o ? (p =
					a.getLineStyle()).fill = null : "shadow" === o && ((p = a.getAreaStyle()).stroke =
				null), o = p, (a = mM[u](s, c, h)).style = o, t.graphicKey = a.type, t.pointer = a), Ew(l
				.model, n));
		u = e, s = t, c = p, h = n, o = i, a = r, l = Yw.innerTextLayout(c.rotation, 0, c.labelDirection), c
			.labelMargin = o.get(["label", "margin"]), hM(s, h, o, a, {
				position: pM(h.axis, u, c),
				align: l.textAlign,
				verticalAlign: l.textVerticalAlign
			})
	}, gM.prototype.getHandleTransform = function(t, e, n) {
		var i = Ew(e.axis.grid.model, e, {
				labelInside: !1
			}),
			n = (i.labelMargin = n.get(["handle", "margin"]), pM(e.axis, t, i));
		return {
			x: n[0],
			y: n[1],
			rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0)
		}
	}, gM.prototype.updateHandleTransform = function(t, e, n, i) {
		var n = n.axis,
			r = n.grid,
			o = n.getGlobalExtent(!0),
			r = yM(r, n).getOtherAxis(n).getGlobalExtent(),
			n = "x" === n.dim ? 0 : 1,
			a = [t.x, t.y],
			e = (a[n] += e[n], a[n] = Math.min(o[1], a[n]), a[n] = Math.max(o[0], a[n]), (r[1] + r[0]) / 2),
			o = [e, e];
		o[n] = a[n];
		return {
			x: a[0],
			y: a[1],
			rotation: t.rotation,
			cursorPoint: o,
			tooltipOption: [{
				verticalAlign: "middle"
			}, {
				align: "center"
			}][n]
		}
	};
	var dM, fM = gM;

	function gM() {
		return null !== dM && dM.apply(this, arguments) || this
	}

	function yM(t, e) {
		var n = {};
		return n[e.dim + "AxisIndex"] = e.index, t.getCartesian(n)
	}
	var mM = {
		line: function(t, e, n) {
			var i;
			return i = [e, n[0]], e = [e, n[1]], n = vM(t), {
				type: "Line",
				subPixelOptimize: !0,
				shape: {
					x1: i[n = n || 0],
					y1: i[1 - n],
					x2: e[n],
					y2: e[1 - n]
				}
			}
		},
		shadow: function(t, e, n) {
			var i = Math.max(1, t.getBandWidth()),
				r = n[1] - n[0];
			return {
				type: "Rect",
				shape: (e = [e - i / 2, n[0]], n = [i, r], i = vM(t), {
					x: e[i = i || 0],
					y: e[1 - i],
					width: n[i],
					height: n[1 - i]
				})
			}
		}
	};

	function vM(t) {
		return "x" === t.dim ? 0 : 1
	}
	u(bM, _M = g), bM.type = "axisPointer", bM.defaultOption = {
		show: "auto",
		z: 50,
		type: "line",
		snap: !1,
		triggerTooltip: !0,
		triggerEmphasis: !0,
		value: null,
		status: null,
		link: [],
		animation: null,
		animationDurationUpdate: 200,
		lineStyle: {
			color: "#B9BEC9",
			width: 1,
			type: "dashed"
		},
		shadowStyle: {
			color: "rgba(210,219,238,0.2)"
		},
		label: {
			show: !0,
			formatter: null,
			precision: "auto",
			margin: 3,
			color: "#fff",
			padding: [5, 7, 5, 7],
			backgroundColor: "auto",
			borderColor: null,
			borderWidth: 0,
			borderRadius: 3
		},
		handle: {
			show: !1,
			icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
			size: 45,
			margin: 50,
			color: "#333",
			shadowBlur: 3,
			shadowColor: "#aaa",
			shadowOffsetX: 0,
			shadowOffsetY: 2,
			throttle: 40
		}
	};
	var _M, xM = bM;

	function bM() {
		var t = null !== _M && _M.apply(this, arguments) || this;
		return t.type = bM.type, t
	}
	var wM = No(),
		SM = E;

	function MM(t, e, n) {
		var i, c, p;

		function r(t, h) {
			c.on(t, function(e) {
				n = p;
				var n, i, r = {
					dispatchAction: o,
					pendings: i = {
						showTip: [],
						hideTip: []
					}
				};

				function o(t) {
					var e = i[t.type];
					e ? e.push(t) : (t.dispatchAction = o, n.dispatchAction(t))
				}
				SM(wM(c).records, function(t) {
					t && h(t, e, r.dispatchAction)
				});
				var t, a = r.pendings,
					s = p,
					l = a.showTip.length,
					u = a.hideTip.length;
				l ? t = a.showTip[l - 1] : u && (t = a.hideTip[u - 1]), t && (t.dispatchAction = null, s
					.dispatchAction(t))
			})
		}
		w.node || (i = e.getZr(), wM(i).records || (wM(i).records = {}), p = e, wM(c = i).initialized || (wM(c)
			.initialized = !0, r("click", S(IM, "click")), r("mousemove", S(IM, "mousemove")), r(
				"globalout", TM)), (wM(i).records[t] || (wM(i).records[t] = {})).handler = n)
	}

	function TM(t, e, n) {
		t.handler("leave", null, n)
	}

	function IM(t, e, n, i) {
		e.handler(t, n, i)
	}

	function CM(t, e) {
		w.node || (e = e.getZr(), (wM(e).records || {})[t] && (wM(e).records[t] = null))
	}
	u(AM, DM = Qg), AM.prototype.render = function(t, e, n) {
		var e = e.getComponent("tooltip"),
			i = t.get("triggerOn") || e && e.get("triggerOn") || "mousemove|click";
		MM("axisPointer", n, function(t, e, n) {
			"none" !== i && ("leave" === t || 0 <= i.indexOf(t)) && n({
				type: "updateAxisPointer",
				currTrigger: t,
				x: e && e.offsetX,
				y: e && e.offsetY
			})
		})
	}, AM.prototype.remove = function(t, e) {
		CM("axisPointer", e)
	}, AM.prototype.dispose = function(t, e) {
		CM("axisPointer", e)
	}, AM.type = "axisPointer";
	var DM, kM = AM;

	function AM() {
		var t = null !== DM && DM.apply(this, arguments) || this;
		return t.type = AM.type, t
	}

	function LM(t, e) {
		var n, i, r, o, a = [],
			s = t.seriesIndex;
		return null == s || !(e = e.getSeriesByIndex(s)) || null == (s = Ro(n = e.getData(), t)) || s < 0 || F(s) ?
		{
			point: []
		} : (i = n.getItemGraphicEl(s), r = e.coordinateSystem, e.getTooltipPosition ? a = e.getTooltipPosition(
			s) || [] : r && r.dataToPoint ? a = t.isStacked ? (e = r.getBaseAxis(), t = r.getOtherAxis(e)
			.dim, e = e.dim, t = "x" === t || "radius" === t ? 1 : 0, e = n.mapDimension(e), (o = [])[t] = n
			.get(e, s), o[1 - t] = n.get(n.getCalculationInfo("stackResultDimension"), s), r.dataToPoint(
			o) || []) : r.dataToPoint(n.getValues(B(r.dimensions, function(t) {
			return n.mapDimension(t)
		}), s)) || [] : i && ((e = i.getBoundingRect().clone()).applyTransform(i.transform), a = [e.x + e
			.width / 2, e.y + e.height / 2
		]), {
			point: a,
			el: i
		})
	}
	var PM = No();

	function OM(t, e, n) {
		var o, a, i, s, l, r, u, h, c, p, d, f, g, y, m = t.currTrigger,
			v = [t.x, t.y],
			_ = t,
			x = t.dispatchAction || pt(n.dispatchAction, n),
			b = e.getComponent("axisPointer").coordSysAxesInfo;
		if (b) return BM(v) && (v = LM({
			seriesIndex: _.seriesIndex,
			dataIndex: _.dataIndex
		}, e).point), o = BM(v), a = _.axesInfo, i = b.axesInfo, s = "leave" === m || BM(v), l = {}, e = {
			list: [],
			map: {}
		}, u = {
			showPointer: S(NM, r = {}),
			showTooltip: S(EM, e)
		}, E(b.coordSysMap, function(t, e) {
			var r = o || t.containPoint(v);
			E(b.coordSysAxesInfo[e], function(t, e) {
				var n = t.axis,
					i = function(t, e) {
						for (var n = 0; n < (t || []).length; n++) {
							var i = t[n];
							if (e.axis.dim === i.axisDim && e.axis.model.componentIndex === i
								.axisIndex) return i
						}
					}(a, t);
				s || !r || a && !i || null != (i = null != (i = i && i.value) || o ? i : n
					.pointToData(v)) && RM(t, i, u, !1, l)
			})
		}), h = {}, E(i, function(n, t) {
			var i = n.linkGroup;
			i && !r[t] && E(i.axesInfo, function(t, e) {
				var e = r[e];
				t !== n && e && (e = e.value, i.mapper && (e = n.axis.scale.parse(i.mapper(e,
					zM(t), zM(n)))), h[n.key] = e)
			})
		}), E(h, function(t, e) {
			RM(i[e], t, u, !0, l)
		}), c = r, _ = i, p = l.axesInfo = [], E(_, function(t, e) {
			var n = t.axisPointerModel.option,
				e = c[e];
			e ? (t.useHandle || (n.status = "show"), n.value = e.value, n.seriesDataIndices = (e
					.payloadBatch || []).slice()) : t.useHandle || (n.status = "hide"), "show" === n
				.status && p.push({
					axisDim: t.axis.dim,
					axisIndex: t.axis.model.componentIndex,
					value: n.value
				})
		}), m = e, _ = t, e = x, BM(t = v) || !m.list.length ? e({
			type: "hideTip"
		}) : (x = ((m.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}, e({
			type: "showTip",
			escapeConnect: !0,
			x: t[0],
			y: t[1],
			tooltipOption: _.tooltipOption,
			position: _.position,
			dataIndexInside: x.dataIndexInside,
			dataIndex: x.dataIndex,
			seriesIndex: x.seriesIndex,
			dataByCoordSys: m.list
		})), e = i, _ = (t = n).getZr(), x = "axisPointerLastHighlights", d = PM(_)[x] || {}, f = PM(_)[
		x] = {}, E(e, function(t, e) {
			var n = t.axisPointerModel.option;
			"show" === n.status && t.triggerEmphasis && E(n.seriesDataIndices, function(t) {
				var e = t.seriesIndex + " | " + t.dataIndex;
				f[e] = t
			})
		}), g = [], y = [], E(d, function(t, e) {
			f[e] || y.push(t)
		}), E(f, function(t, e) {
			d[e] || g.push(t)
		}), y.length && t.dispatchAction({
			type: "downplay",
			escapeConnect: !0,
			notBlur: !0,
			batch: y
		}), g.length && t.dispatchAction({
			type: "highlight",
			escapeConnect: !0,
			notBlur: !0,
			batch: g
		}), l
	}

	function RM(t, e, n, i, r) {
		var o, a, s, l, u, h, c, p, d, f, g = t.axis;
		!g.scale.isBlank() && g.containData(e) && (t.involveSeries ? (a = e, s = t.axis, l = s.dim, u = a, h = [],
				c = Number.MAX_VALUE, p = -1, E(t.seriesModels, function(e, t) {
					var n, i = e.getData().mapDimensionsAll(l);
					if (e.getAxisTooltipData) var r = e.getAxisTooltipData(i, a, s),
						o = r.dataIndices,
						r = r.nestestValue;
					else {
						if (!(o = e.getData().indicesOfNearest(i[0], a, "category" === s.type ? .5 : null))
							.length) return;
						r = e.getData().get(i[0], o[0])
					}
					null != r && isFinite(r) && (i = a - r, (n = Math.abs(i)) <= c) && ((n < c || 0 <= i &&
						p < 0) && (c = n, p = i, u = r, h.length = 0), E(o, function(t) {
						h.push({
							seriesIndex: e.seriesIndex,
							dataIndexInside: t,
							dataIndex: e.getData().getRawIndex(t)
						})
					}))
				}), f = (o = {
					payloadBatch: h,
					snapToValue: u
				}).snapToValue, (d = o.payloadBatch)[0] && null == r.seriesIndex && P(r, d[0]), !i && t.snap &&
				g.containData(f) && null != f && (e = f), n.showPointer(t, e, d), n.showTooltip(t, o, f)) : n
			.showPointer(t, e))
	}

	function NM(t, e, n, i) {
		t[e.key] = {
			value: n,
			payloadBatch: i
		}
	}

	function EM(t, e, n, i) {
		var r, o, n = n.payloadBatch,
			a = e.axis,
			s = a.model,
			l = e.axisPointerModel;
		e.triggerTooltip && n.length && (r = iS(e = e.coordSys.model), (o = t.map[r]) || (o = t.map[r] = {
			coordSysId: e.id,
			coordSysIndex: e.componentIndex,
			coordSysType: e.type,
			coordSysMainType: e.mainType,
			dataByAxis: []
		}, t.list.push(o)), o.dataByAxis.push({
			axisDim: a.dim,
			axisIndex: s.componentIndex,
			axisType: s.type,
			axisId: s.id,
			value: i,
			valueLabelOpt: {
				precision: l.get(["label", "precision"]),
				formatter: l.get(["label", "formatter"])
			},
			seriesDataIndices: n.slice()
		}))
	}

	function zM(t) {
		var e = t.axis.model,
			n = {},
			t = n.axisDim = t.axis.dim;
		return n.axisIndex = n[t + "AxisIndex"] = e.componentIndex, n.axisName = n[t + "AxisName"] = e.name, n
			.axisId = n[t + "AxisId"] = e.id, n
	}

	function BM(t) {
		return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1])
	}

	function FM(t) {
		aS.registerAxisPointerClass("CartesianAxisPointer", fM), t.registerComponentModel(xM), t
			.registerComponentView(kM), t.registerPreprocessor(function(t) {
				var e;
				t && (t.axisPointer && 0 !== t.axisPointer.length || (t.axisPointer = {}), e = t.axisPointer
					.link) && !F(e) && (t.axisPointer.link = [e])
			}), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, function(t, e) {
				t.getComponent("axisPointer").coordSysAxesInfo = Jw(t, e)
			}), t.registerAction({
				type: "updateAxisPointer",
				event: "updateAxisPointer",
				update: ":updateAxisPointer"
			}, OM)
	}
	u(HM, VM = g), HM.type = "tooltip", HM.dependencies = ["axisPointer"], HM.defaultOption = {
		z: 60,
		show: !0,
		showContent: !0,
		trigger: "item",
		triggerOn: "mousemove|click",
		alwaysShowContent: !1,
		displayMode: "single",
		renderMode: "auto",
		confine: null,
		showDelay: 0,
		hideDelay: 100,
		transitionDuration: .4,
		enterable: !1,
		backgroundColor: "#fff",
		shadowBlur: 10,
		shadowColor: "rgba(0, 0, 0, .2)",
		shadowOffsetX: 1,
		shadowOffsetY: 2,
		borderRadius: 4,
		borderWidth: 1,
		padding: null,
		extraCssText: "",
		axisPointer: {
			type: "line",
			axis: "auto",
			animation: "auto",
			animationDurationUpdate: 200,
			animationEasingUpdate: "exponentialOut",
			crossStyle: {
				color: "#999",
				width: 1,
				type: "dashed",
				textStyle: {}
			}
		},
		textStyle: {
			color: "#666",
			fontSize: 14
		}
	};
	var VM, GM = HM;

	function HM() {
		var t = null !== VM && VM.apply(this, arguments) || this;
		return t.type = HM.type, t
	}

	function WM(t) {
		var e = t.get("confine");
		return null != e ? e : "richText" === t.get("renderMode")
	}

	function UM(t) {
		if (w.domSupported)
			for (var e = document.documentElement.style, n = 0, i = t.length; n < i; n++)
				if (t[n] in e) return t[n]
	}
	var XM = UM(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]);

	function YM(t, e) {
		if (!t) return e;
		e = Ip(e, !0);
		var n = t.indexOf(e);
		return (t = -1 === n ? e : "-" + t.slice(0, n) + "-" + e).toLowerCase()
	}
	var qM = YM(UM(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]),
			"transition"),
		ZM = YM(XM, "transform"),
		jM = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (w
			.transform3dSupported ? "will-change:transform;" : "");

	function KM(t, e, n) {
		var i, t = t.toFixed(0) + "px",
			e = e.toFixed(0) + "px";
		return w.transformSupported ? (i = "translate" + ((i = w.transform3dSupported) ? "3d" : "") + "(" + t +
			"," + e + (i ? ",0" : "") + ")", n ? "top:0;left:0;" + ZM + ":" + i + ";" : [
				["top", 0],
				["left", 0],
				[XM, i]
			]) : n ? "top:" + e + ";left:" + t + ";" : [
			["top", e],
			["left", t]
		]
	}

	function $M(i, t, e) {
		var n, r, o = [],
			a = i.get("transitionDuration"),
			s = i.get("backgroundColor"),
			l = i.get("shadowBlur"),
			u = i.get("shadowColor"),
			h = i.get("shadowOffsetX"),
			c = i.get("shadowOffsetY"),
			p = i.getModel("textStyle"),
			d = zg(i, "html");
		return o.push("box-shadow:" + (h + "px " + c + "px " + l + "px " + u)), t && a && o.push((u = "opacity" + (
				l = " " + (h = a) / 2 + "s " + (c = "cubic-bezier(0.23,1,0.32,1)")) + ",visibility" + l,
			e || (l = " " + h + "s " + c, u += w.transformSupported ? "," + ZM + l : ",left" + l + ",top" +
				l), qM + ":" + u)), s && o.push("background-color:" + s), E(["width", "color", "radius"],
			function(t) {
				var e = "border-" + t,
					n = Ip(e),
					n = i.get(n);
				null != n && o.push(e + ":" + n + ("color" === t ? "" : "px"))
			}), o.push((r = [], t = (n = p).get("fontSize"), (a = n.getTextColor()) && r.push("color:" + a), r
			.push("font:" + n.getFont()), t && r.push("line-height:" + Math.round(3 * t / 2) + "px"), a = n
			.get("textShadowColor"), t = n.get("textShadowBlur") || 0, e = n.get("textShadowOffsetX") || 0,
			h = n.get("textShadowOffsetY") || 0, a && t && r.push("text-shadow:" + e + "px " + h + "px " +
				t + "px " + a), E(["decoration", "align"], function(t) {
				var e = n.get(t);
				e && r.push("text-" + t + ":" + e)
			}), r.join(";"))), null != d && o.push("padding:" + Cp(d).join("px ") + "px"), o.join(";") + ";"
	}

	function QM(t, e, n, i, r) {
		var o, a, s = e && e.painter;
		n ? (o = s && s.getViewportRoot()) && (a = t, n = n, ge(fe, o, i, r, !0)) && ge(a, n, fe[0], fe[1]) : (t[
			0] = i, t[1] = r, (o = s && s.getViewportRootOffset()) && (t[0] += o.offsetLeft, t[1] += o
				.offsetTop)), t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight()
	}
	tT.prototype.update = function(t) {
		this._container || (i = this._api.getDom(), n = "position", n = (e = (e = i).currentStyle || document
				.defaultView && document.defaultView.getComputedStyle(e)) ? n ? e[n] : e : null,
			"absolute" !== (e = i.style).position && "absolute" !== n && (e.position = "relative"));
		var e, n, i = t.get("alwaysShowContent");
		i && this._moveIfResized(), this._alwaysShowContent = i, this.el.className = t.get("className") || ""
	}, tT.prototype.show = function(t, e) {
		clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout);
		var n = this.el,
			i = n.style,
			r = this._styleCoord;
		n.innerHTML ? i.cssText = jM + $M(t, !this._firstShow, this._longHide) + KM(r[0], r[1], !0) +
			"border-color:" + Op(e) + ";" + (t.get("extraCssText") || "") + ";pointer-events:" + (this
				._enterable ? "auto" : "none") : i.display = "none", this._show = !0, this._firstShow = !1, this
			._longHide = !1
	}, tT.prototype.setContent = function(t, e, n, i, r) {
		var o = this.el;
		if (null == t) o.innerHTML = "";
		else {
			var a, s, l, u, h, c = "";
			if (V(r) && "item" === n.get("trigger") && !WM(n) && (n = n, i = i, c = V(r = r) && "inside" !== r ?
					(a = n.get("backgroundColor"), n = n.get("borderWidth"), i = Op(i), r = r = "left" === (r =
							r) ? "right" : "right" === r ? "left" : "top" === r ? "bottom" : "top", p = Math
						.max(1.5 * Math.round(n), 6), s = "", l = ZM + ":", -1 < C(["left", "right"], r) ? (s +=
							"top:50%", l += "translateY(-50%) rotate(" + (h = "left" == r ? -225 : -45) + "deg)"
							) : (s += "left:50%", l += "translateX(-50%) rotate(" + (h = "top" == r ? 225 :
							45) + "deg)"), h = h * Math.PI / 180, h = (u = p + n) * Math.abs(Math.cos(h)) + u *
						Math.abs(Math.sin(h)), i = i + " solid " + n + "px;", '<div style="' + [
							"position:absolute;width:" + p + "px;height:" + p + "px;z-index:-1;", (s += ";" +
								r + ":-" + Math.round(100 * ((h - Math.SQRT2 * n) / 2 + Math.SQRT2 * n - (h -
									u) / 2)) / 100 + "px") + ";" + l + ";", "border-bottom:" + i,
							"border-right:" + i, "background-color:" + a + ";"
						].join("") + '"></div>') : ""), V(t)) o.innerHTML = t + c;
			else if (t) {
				o.innerHTML = "", F(t) || (t = [t]);
				for (var p, d = 0; d < t.length; d++) yt(t[d]) && t[d].parentNode !== o && o.appendChild(t[d]);
				c && o.childNodes.length && ((p = document.createElement("div")).innerHTML = c, o.appendChild(
					p))
			}
		}
	}, tT.prototype.setEnterable = function(t) {
		this._enterable = t
	}, tT.prototype.getSize = function() {
		var t = this.el;
		return [t.offsetWidth, t.offsetHeight]
	}, tT.prototype.moveTo = function(t, e) {
		var n, i = this._styleCoord;
		QM(i, this._zr, this._container, t, e), null != i[0] && null != i[1] && (n = this.el.style, E(KM(i[0],
			i[1]), function(t) {
			n[t[0]] = t[1]
		}))
	}, tT.prototype._moveIfResized = function() {
		var t = this._styleCoord[2],
			e = this._styleCoord[3];
		this.moveTo(t * this._zr.getWidth(), e * this._zr.getHeight())
	}, tT.prototype.hide = function() {
		var t = this,
			e = this.el.style;
		e.visibility = "hidden", e.opacity = "0", w.transform3dSupported && (e.willChange = ""), this._show = !
			1, this._longHideTimeout = setTimeout(function() {
				return t._longHide = !0
			}, 500)
	}, tT.prototype.hideLater = function(t) {
		!this._show || this._inContent && this._enterable || this._alwaysShowContent || (t ? (this._hideDelay =
			t, this._show = !1, this._hideTimeout = setTimeout(pt(this.hide, this), t)) : this.hide())
	}, tT.prototype.isShow = function() {
		return this._show
	}, tT.prototype.dispose = function() {
		clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout);
		var t = this.el.parentNode;
		t && t.removeChild(this.el), this.el = this._container = null
	};
	var JM = tT;

	function tT(t, e) {
		if (this._show = !1, this._styleCoord = [0, 0, 0, 0], this._enterable = !0, this._alwaysShowContent = !1,
			this._firstShow = !0, this._longHide = !0, w.wxa) return null;
		var n = document.createElement("div"),
			i = (n.domBelongToZr = !0, this.el = n, this._zr = t.getZr()),
			e = e.appendTo,
			e = e && (V(e) ? document.querySelector(e) : yt(e) ? e : D(e) && e(t.getDom())),
			r = (QM(this._styleCoord, i, e, t.getWidth() / 2, t.getHeight() / 2), (e || t.getDom()).appendChild(n),
				this._api = t, this._container = e, this);
		n.onmouseenter = function() {
			r._enterable && (clearTimeout(r._hideTimeout), r._show = !0), r._inContent = !0
		}, n.onmousemove = function(t) {
			var e;
			t = t || window.event, r._enterable || (e = i.handler, Ie(i.painter.getViewportRoot(), t, !0), e
				.dispatch("mousemove", t))
		}, n.onmouseleave = function() {
			r._inContent = !1, r._enterable && r._show && r.hideLater(r._hideDelay)
		}
	}
	nT.prototype.update = function(t) {
		t = t.get("alwaysShowContent");
		t && this._moveIfResized(), this._alwaysShowContent = t
	}, nT.prototype.show = function() {
		this._hideTimeout && clearTimeout(this._hideTimeout), this.el.show(), this._show = !0
	}, nT.prototype.setContent = function(t, e, n, i, r) {
		var o = this,
			a = (O(t) && f(""), this.el && this._zr.remove(this.el), n.getModel("textStyle")),
			s = (this.el = new Vs({
				style: {
					rich: e.richTextStyles,
					text: t,
					lineHeight: 22,
					borderWidth: 1,
					borderColor: i,
					textShadowColor: a.get("textShadowColor"),
					fill: n.get(["textStyle", "color"]),
					padding: zg(n, "richText"),
					verticalAlign: "top",
					align: "left"
				},
				z: n.get("z")
			}), E(["backgroundColor", "borderRadius", "shadowColor", "shadowBlur", "shadowOffsetX",
				"shadowOffsetY"
			], function(t) {
				o.el.style[t] = n.get(t)
			}), E(["textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], function(t) {
				o.el.style[t] = a.get(t) || 0
			}), this._zr.add(this.el), this);
		this.el.on("mouseover", function() {
			s._enterable && (clearTimeout(s._hideTimeout), s._show = !0), s._inContent = !0
		}), this.el.on("mouseout", function() {
			s._enterable && s._show && s.hideLater(s._hideDelay), s._inContent = !1
		})
	}, nT.prototype.setEnterable = function(t) {
		this._enterable = t
	}, nT.prototype.getSize = function() {
		var t = this.el,
			e = this.el.getBoundingRect(),
			t = rT(t.style);
		return [e.width + t.left + t.right, e.height + t.top + t.bottom]
	}, nT.prototype.moveTo = function(t, e) {
		var n, i, r = this.el;
		r && (oT(i = this._styleCoord, this._zr, t, e), t = i[0], e = i[1], n = iT((i = r.style).borderWidth ||
			0), i = rT(i), r.x = t + n + i.left, r.y = e + n + i.top, r.markRedraw())
	}, nT.prototype._moveIfResized = function() {
		var t = this._styleCoord[2],
			e = this._styleCoord[3];
		this.moveTo(t * this._zr.getWidth(), e * this._zr.getHeight())
	}, nT.prototype.hide = function() {
		this.el && this.el.hide(), this._show = !1
	}, nT.prototype.hideLater = function(t) {
		!this._show || this._inContent && this._enterable || this._alwaysShowContent || (t ? (this._hideDelay =
			t, this._show = !1, this._hideTimeout = setTimeout(pt(this.hide, this), t)) : this.hide())
	}, nT.prototype.isShow = function() {
		return this._show
	}, nT.prototype.dispose = function() {
		this._zr.remove(this.el)
	};
	var eT = nT;

	function nT(t) {
		this._show = !1, this._styleCoord = [0, 0, 0, 0], this._alwaysShowContent = !1, this._enterable = !0, this
			._zr = t.getZr(), oT(this._styleCoord, this._zr, t.getWidth() / 2, t.getHeight() / 2)
	}

	function iT(t) {
		return Math.max(0, t)
	}

	function rT(t) {
		var e = iT(t.shadowBlur || 0),
			n = iT(t.shadowOffsetX || 0),
			t = iT(t.shadowOffsetY || 0);
		return {
			left: iT(e - n),
			right: iT(e + n),
			top: iT(e - t),
			bottom: iT(e + t)
		}
	}

	function oT(t, e, n, i) {
		t[0] = n, t[1] = i, t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight()
	}
	var aT, sT = new Ns({
			shape: {
				x: -1,
				y: -1,
				width: 2,
				height: 2
			}
		}),
		lT = (u(uT, aT = Qg), uT.prototype.init = function(t, e) {
			var n;
			!w.node && e.getDom() && (t = t.getComponent("tooltip"), n = this._renderMode = "auto" === (n = t
					.get("renderMode")) ? w.domSupported ? "html" : "richText" : n || "html", this
				._tooltipContent = "richText" === n ? new eT(e) : new JM(e, {
					appendTo: t.get("appendToBody", !0) ? "body" : t.get("appendTo", !0)
				}))
		}, uT.prototype.render = function(t, e, n) {
			!w.node && n.getDom() && (this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this
				._api = n, (e = this._tooltipContent).update(t), e.setEnterable(t.get("enterable")), this
				._initGlobalListener(), this._keepShow(), "richText" !== this._renderMode && t.get(
					"transitionDuration") ? fy(this, "_updatePosition", 50, "fixRate") : gy(this,
					"_updatePosition"))
		}, uT.prototype._initGlobalListener = function() {
			var i = this._tooltipModel.get("triggerOn");
			MM("itemTooltip", this._api, pt(function(t, e, n) {
				"none" !== i && (0 <= i.indexOf(t) ? this._tryShow(e, n) : "leave" === t && this
					._hide(n))
			}, this))
		}, uT.prototype._keepShow = function() {
			var t, e = this._tooltipModel,
				n = this._ecModel,
				i = this._api,
				r = e.get("triggerOn");
			null != this._lastX && null != this._lastY && "none" !== r && "click" !== r && (t = this,
				clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(
			function() {
					i.isDisposed() || t.manuallyShowTip(e, n, i, {
						x: t._lastX,
						y: t._lastY,
						dataByCoordSys: t._lastDataByCoordSys
					})
				}))
		}, uT.prototype.manuallyShowTip = function(t, e, n, i) {
			var r, o, a, s;
			i.from !== this.uid && !w.node && n.getDom() && (r = cT(i, n), this._ticket = "", s = i
				.dataByCoordSys, (o = function(n, t, e) {
					var i = Bo(n).queryOptionMap,
						r = i.keys()[0];
					if (r && "series" !== r) {
						var o, t = Vo(t, r, i.get(r), {
							useDefault: !1,
							enableAll: !1,
							enableNone: !1
						}).models[0];
						if (t)
							if (e.getViewOfComponentModel(t).group.traverse(function(t) {
									var e = k(t).tooltipConfig;
									if (e && e.name === n.name) return o = t, !0
								}), o) return {
								componentMainType: r,
								componentIndex: t.componentIndex,
								el: o
							}
					}
				}(i, e, n)) ? ((a = o.el.getBoundingRect().clone()).applyTransform(o.el.transform), this
					._tryShow({
						offsetX: a.x + a.width / 2,
						offsetY: a.y + a.height / 2,
						target: o.el,
						position: i.position,
						positionDefault: "bottom"
					}, r)) : i.tooltip && null != i.x && null != i.y ? ((a = sT).x = i.x, a.y = i.y, a
					.update(), k(a).tooltipConfig = {
						name: null,
						option: i.tooltip
					}, this._tryShow({
						offsetX: i.x,
						offsetY: i.y,
						target: a
					}, r)) : s ? this._tryShow({
					offsetX: i.x,
					offsetY: i.y,
					position: i.position,
					dataByCoordSys: s,
					tooltipOption: i.tooltipOption
				}, r) : null != i.seriesIndex ? this._manuallyAxisShowTip(t, e, n, i) || (a = (o = LM(i, e))
					.point[0], s = o.point[1], null != a && null != s && this._tryShow({
						offsetX: a,
						offsetY: s,
						target: o.el,
						position: i.position,
						positionDefault: "bottom"
					}, r)) : null != i.x && null != i.y && (n.dispatchAction({
					type: "updateAxisPointer",
					x: i.x,
					y: i.y
				}), this._tryShow({
					offsetX: i.x,
					offsetY: i.y,
					position: i.position,
					target: n.getZr().findHover(i.x, i.y).target
				}, r)))
		}, uT.prototype.manuallyHideTip = function(t, e, n, i) {
			var r = this._tooltipContent;
			this._tooltipModel && r.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY =
				this._lastDataByCoordSys = null, i.from !== this.uid && this._hide(cT(i, n))
		}, uT.prototype._manuallyAxisShowTip = function(t, e, n, i) {
			var r = i.seriesIndex,
				o = i.dataIndex,
				a = e.getComponent("axisPointer").coordSysAxesInfo;
			if (null != r && null != o && null != a) {
				a = e.getSeriesByIndex(r);
				if (a) {
					e = hT([a.getData().getItemModel(o), a, (a.coordinateSystem || {}).model], this
						._tooltipModel);
					if ("axis" === e.get("trigger")) return n.dispatchAction({
						type: "updateAxisPointer",
						seriesIndex: r,
						dataIndex: o,
						position: i.position
					}), !0
				}
			}
		}, uT.prototype._tryShow = function(t, e) {
			var n, i, r, o = t.target;
			this._tooltipModel && (this._lastX = t.offsetX, this._lastY = t.offsetY, (n = t.dataByCoordSys) && n
				.length ? this._showAxisTooltip(n, t) : o ? "legend" !== k(o).ssrType && (Zy(o, function(
					t) {
						return null != k(t).dataIndex ? (i = t, 1) : null != k(t).tooltipConfig && (r =
							t, 1)
					}, !(this._lastDataByCoordSys = null)), i ? this._showSeriesItemTooltip(t, i, e) : r ?
					this._showComponentItemTooltip(t, r, e) : this._hide(e)) : (this._lastDataByCoordSys =
					null, this._hide(e)))
		}, uT.prototype._showOrMove = function(t, e) {
			t = t.get("showDelay");
			e = pt(e, this), clearTimeout(this._showTimout), 0 < t ? this._showTimout = setTimeout(e, t) : e()
		}, uT.prototype._showAxisTooltip = function(t, e) {
			var u = this._ecModel,
				h = this._tooltipModel,
				n = [e.offsetX, e.offsetY],
				i = hT([e.tooltipOption], h),
				c = this._renderMode,
				p = [],
				d = kg("section", {
					blocks: [],
					noHeader: !0
				}),
				f = [],
				g = new Bg,
				r = (E(t, function(t) {
					E(t.dataByAxis, function(r) {
						var o, a, s = u.getComponent(r.axisDim + "Axis", r.axisIndex),
							l = r.value;
						s && null != l && (o = cM(l, s.axis, u, r.seriesDataIndices, r
							.valueLabelOpt), a = kg("section", {
							header: o,
							noHeader: !It(o),
							sortBlocks: !0,
							blocks: []
						}), d.blocks.push(a), E(r.seriesDataIndices, function(t) {
							var e, n = u.getSeriesByIndex(t.seriesIndex),
								t = t.dataIndexInside,
								i = n.getDataParams(t);
							i.dataIndex < 0 || (i.axisDim = r.axisDim, i.axisIndex =
								r.axisIndex, i.axisType = r.axisType, i.axisId =
								r.axisId, i.axisValue = V_(s.axis, {
									value: l
								}), i.axisValueLabel = o, i.marker = g
								.makeTooltipMarker("item", Op(i.color), c), (e =
									(t = Pf(n.formatTooltip(t, !0, null))).frag
									) && (n = hT([n], h).get("valueFormatter"),
									a.blocks.push(n ? P({
										valueFormatter: n
									}, e) : e)), t.text && f.push(t.text), p
								.push(i))
						}))
					})
				}), d.blocks.reverse(), f.reverse(), e.position),
				e = i.get("order"),
				e = Rg(d, g, c, e, u.get("useUTC"), i.get("textStyle")),
				e = (e && f.unshift(e), "richText" === c ? "\n\n" : "<br/>"),
				o = f.join(e);
			this._showOrMove(i, function() {
				this._updateContentNotChangedOnAxis(t, p) ? this._updatePosition(i, r, n[0], n[1], this
					._tooltipContent, p) : this._showTooltipContent(i, o, p, Math.random() + "", n[
					0], n[1], r, null, g)
			})
		}, uT.prototype._showSeriesItemTooltip = function(t, e, n) {
			var i, r, o, a, s, l = this._ecModel,
				e = k(e),
				u = e.seriesIndex,
				h = l.getSeriesByIndex(u),
				c = e.dataModel || h,
				p = e.dataIndex,
				e = e.dataType,
				d = c.getData(e),
				f = this._renderMode,
				g = t.positionDefault,
				y = hT([d.getItemModel(p), c, h && (h.coordinateSystem || {}).model], this._tooltipModel, g ? {
					position: g
				} : null),
				h = y.get("trigger");
			null != h && "item" !== h || (i = c.getDataParams(p, e), r = new Bg, i.marker = r.makeTooltipMarker(
					"item", Op(i.color), f), g = Pf(c.formatTooltip(p, !1, e)), h = y.get("order"), e = y
				.get("valueFormatter"), o = g.frag, a = o ? Rg(e ? P({
					valueFormatter: e
				}, o) : o, r, f, h, l.get("useUTC"), y.get("textStyle")) : g.text, s = "item_" + c.name +
				"_" + p, this._showOrMove(y, function() {
					this._showTooltipContent(y, a, i, s, t.offsetX, t.offsetY, t.position, t.target, r)
				}), n({
					type: "showTip",
					dataIndexInside: p,
					dataIndex: d.getRawIndex(p),
					seriesIndex: u,
					from: this.uid
				}))
		}, uT.prototype._showComponentItemTooltip = function(e, n, t) {
			var i = k(n),
				r = i.tooltipConfig.option || {},
				o = [r = V(r) ? {
					content: r,
					formatter: r
				} : r],
				i = this._ecModel.getComponent(i.componentMainType, i.componentIndex),
				i = (i && o.push(i), o.push({
					formatter: r.content
				}), e.positionDefault),
				a = hT(o, this._tooltipModel, i ? {
					position: i
				} : null),
				s = a.get("content"),
				l = Math.random() + "",
				u = new Bg;
			this._showOrMove(a, function() {
				var t = y(a.get("formatterParams") || {});
				this._showTooltipContent(a, s, t, l, e.offsetX, e.offsetY, e.position, n, u)
			}), t({
				type: "showTip",
				from: this.uid
			})
		}, uT.prototype._showTooltipContent = function(n, t, i, e, r, o, a, s, l) {
			var u, h, c, p, d;
			this._ticket = "", n.get("showContent") && n.get("show") && ((u = this._tooltipContent)
				.setEnterable(n.get("enterable")), h = n.get("formatter"), a = a || n.get("position"), t =
				t, c = this._getNearestPoint([r, o], i, n.get("trigger"), n.get("borderColor")).color, h &&
				(t = V(h) ? (p = n.ecModel.get("useUTC"), t = h, Lp(t = (d = F(i) ? i[0] : i) && d
						.axisType && 0 <= d.axisType.indexOf("time") ? up(d.axisValue, t, p) : t, i, !0
						)) : D(h) ? (d = pt(function(t, e) {
					t === this._ticket && (u.setContent(e, l, n, c, a), this._updatePosition(n,
						a, r, o, u, i, s))
				}, this), this._ticket = e, h(i, e, d)) : h), u.setContent(t, l, n, c, a), u.show(n, c),
				this._updatePosition(n, a, r, o, u, i, s))
		}, uT.prototype._getNearestPoint = function(t, e, n, i) {
			return "axis" === n || F(e) ? {
				color: i || ("html" === this._renderMode ? "#fff" : "none")
			} : F(e) ? void 0 : {
				color: i || e.color || e.borderColor
			}
		}, uT.prototype._updatePosition = function(t, e, n, i, r, o, a) {
			var s, l = this._api.getWidth(),
				u = this._api.getHeight(),
				h = (e = e || t.get("position"), r.getSize()),
				c = t.get("align"),
				p = t.get("verticalAlign"),
				d = a && a.getBoundingRect().clone();
			a && d.applyTransform(a.transform), F(e = D(e) ? e([n, i], o, r.el, d, {
					viewSize: [l, u],
					contentSize: h.slice()
				}) : e) ? (n = W(e[0], l), i = W(e[1], u)) : O(e) ? ((o = e).width = h[0], o.height = h[1], n =
					(o = Vp(o, {
						width: l,
						height: u
					})).x, i = o.y, p = c = null) : i = (n = (s = V(e) && a ? function(t, e, n, i) {
					var r = n[0],
						o = n[1],
						a = Math.ceil(Math.SQRT2 * i) + 8,
						s = 0,
						l = 0,
						u = e.width,
						h = e.height;
					switch (t) {
						case "inside":
							s = e.x + u / 2 - r / 2, l = e.y + h / 2 - o / 2;
							break;
						case "top":
							s = e.x + u / 2 - r / 2, l = e.y - o - a;
							break;
						case "bottom":
							s = e.x + u / 2 - r / 2, l = e.y + h + a;
							break;
						case "left":
							s = e.x - r - a, l = e.y + h / 2 - o / 2;
							break;
						case "right":
							s = e.x + u + a, l = e.y + h / 2 - o / 2
					}
					return [s, l]
				}(e, d, h, t.get("borderWidth")) : function(t, e, n, i, r, o, a) {
					var n = n.getSize(),
						s = n[0],
						n = n[1];
					null != o && (i < t + s + o + 2 ? t -= s + o : t += o);
					null != a && (r < e + n + a ? e -= n + a : e += a);
					return [t, e]
				}(n, i, r, l, u, c ? null : 20, p ? null : 20))[0], s[1]), c && (n -= pT(c) ? h[0] / 2 :
					"right" === c ? h[0] : 0), p && (i -= pT(p) ? h[1] / 2 : "bottom" === p ? h[1] : 0), WM(
				t) && (o = n, a = i, e = l, d = u, c = (c = r).getSize(), p = c[0], c = c[1], o = Math.min(o +
					p, e) - p, a = Math.min(a + c, d) - c, o = Math.max(o, 0), a = Math.max(a, 0), n = (
					s = [o, a])[0], i = s[1]), r.moveTo(n, i)
		}, uT.prototype._updateContentNotChangedOnAxis = function(n, o) {
			var t = this._lastDataByCoordSys,
				a = this._cbParamsList,
				s = !!t && t.length === n.length;
			return s && E(t, function(t, e) {
				var t = t.dataByAxis || [],
					r = (n[e] || {}).dataByAxis || [];
				(s = s && t.length === r.length) && E(t, function(t, e) {
					var e = r[e] || {},
						n = t.seriesDataIndices || [],
						i = e.seriesDataIndices || [];
					(s = s && t.value === e.value && t.axisType === e.axisType && t.axisId === e
						.axisId && n.length === i.length) && E(n, function(t, e) {
						e = i[e];
						s = s && t.seriesIndex === e.seriesIndex && t.dataIndex === e
							.dataIndex
					}), a && E(t.seriesDataIndices, function(t) {
						var t = t.seriesIndex,
							e = o[t],
							t = a[t];
						e && t && t.data !== e.data && (s = !1)
					})
				})
			}), this._lastDataByCoordSys = n, this._cbParamsList = o, !!s
		}, uT.prototype._hide = function(t) {
			this._lastDataByCoordSys = null, t({
				type: "hideTip",
				from: this.uid
			})
		}, uT.prototype.dispose = function(t, e) {
			!w.node && e.getDom() && (gy(this, "_updatePosition"), this._tooltipContent.dispose(), CM(
				"itemTooltip", e))
		}, uT.type = "tooltip", uT);

	function uT() {
		var t = null !== aT && aT.apply(this, arguments) || this;
		return t.type = uT.type, t
	}

	function hT(t, e, n) {
		for (var i = e.ecModel, r = n ? (r = new Vc(n, i, i), new Vc(e.option, r, i)) : e, o = t.length - 1; 0 <=
			o; o--) {
			var a = t[o];
			(a = a && (V(a = a instanceof Vc ? a.get("tooltip", !0) : a) ? {
				formatter: a
			} : a)) && (r = new Vc(a, r, i))
		}
		return r
	}

	function cT(t, e) {
		return t.dispatchAction || pt(e.dispatchAction, e)
	}

	function pT(t) {
		return "center" === t || "middle" === t
	}

	function dT(t, e) {
		if (t)
			for (var n = F(t) ? t : [t], i = 0; i < n.length; i++)
				if (n[i] && n[i][e]) return 1
	}

	function fT(t) {
		Mo(t, "label", ["show"])
	}
	Z_(function(t) {
		Z_(FM), t.registerComponentModel(GM), t.registerComponentView(lT), t.registerAction({
			type: "showTip",
			event: "showTip",
			update: "tooltip:manuallyShowTip"
		}, Ft), t.registerAction({
			type: "hideTip",
			event: "hideTip",
			update: "tooltip:manuallyHideTip"
		}, Ft)
	});
	var gT, yT = No(),
		mT = (u(vT, gT = g), vT.prototype.init = function(t, e, n) {
			this.mergeDefaultAndTheme(t, n), this._mergeOption(t, n, !1, !0)
		}, vT.prototype.isAnimationEnabled = function() {
			var t;
			return !w.node && (t = this.__hostSeries, this.getShallow("animation")) && t && t
				.isAnimationEnabled()
		}, vT.prototype.mergeOption = function(t, e) {
			this._mergeOption(t, e, !1, !1)
		}, vT.prototype._mergeOption = function(t, i, e, r) {
			var o = this.mainType;
			e || i.eachSeries(function(t) {
				var e = t.get(this.mainType, !0),
					n = yT(t)[o];
				e && e.data ? (n ? n._mergeOption(e, i, !0) : (r && fT(e), E(e.data, function(t) {
					t instanceof Array ? (fT(t[0]), fT(t[1])) : fT(t)
				}), P(n = this.createMarkerModelFromSeries(e, this, i), {
					mainType: this.mainType,
					seriesIndex: t.seriesIndex,
					name: t.name,
					createdBySelf: !0
				}), n.__hostSeries = t), yT(t)[o] = n) : yT(t)[o] = null
			}, this)
		}, vT.prototype.formatTooltip = function(t, e, n) {
			var i = this.getData(),
				r = this.getRawValue(t),
				i = i.getName(t);
			return kg("section", {
				header: this.name,
				blocks: [kg("nameValue", {
					name: i,
					value: r,
					noName: !i,
					noValue: null == r
				})]
			})
		}, vT.prototype.getData = function() {
			return this._data
		}, vT.prototype.setData = function(t) {
			this._data = t
		}, vT.getMarkerModelFromSeries = function(t, e) {
			return yT(t)[e]
		}, vT.type = "marker", vT.dependencies = ["series", "grid", "polar", "geo"], vT);

	function vT() {
		var t = null !== gT && gT.apply(this, arguments) || this;
		return t.type = vT.type, t.createdBySelf = !1, t
	}
	st(mT, zc.prototype);
	u(bT, _T = mT), bT.prototype.createMarkerModelFromSeries = function(t, e, n) {
		return new bT(t, e, n)
	}, bT.type = "markPoint", bT.defaultOption = {
		z: 5,
		symbol: "pin",
		symbolSize: 50,
		tooltip: {
			trigger: "item"
		},
		label: {
			show: !0,
			position: "inside"
		},
		itemStyle: {
			borderWidth: 2
		},
		emphasis: {
			label: {
				show: !0
			}
		}
	};
	var _T, xT = bT;

	function bT() {
		var t = null !== _T && _T.apply(this, arguments) || this;
		return t.type = bT.type, t
	}

	function wT(t) {
		return !isNaN(parseFloat(t.x)) || !isNaN(parseFloat(t.y))
	}

	function ST(t, e, n, i, r, o) {
		var a = [],
			s = Rv(e, i) ? e.getCalculationInfo("stackResultDimension") : i,
			t = kT(e, s, t),
			t = e.indicesOfNearest(s, t)[0],
			r = (a[r] = e.get(n, t), a[o] = e.get(s, t), e.get(i, t)),
			n = oo(e.get(i, t));
		return 0 <= (n = Math.min(n, 20)) && (a[o] = +a[o].toFixed(n)), [a, r]
	}
	var MT = {
		min: S(ST, "min"),
		max: S(ST, "max"),
		average: S(ST, "average"),
		median: S(ST, "median")
	};

	function TT(t, e) {
		if (e) {
			var n, i = t.getData(),
				r = t.coordinateSystem,
				o = r && r.dimensions;
			if (n = e, (isNaN(parseFloat(n.x)) || isNaN(parseFloat(n.y))) && !F(e.coord) && F(o) && (n = IT(e, i, r,
					t), (e = y(e)).type && MT[e.type] && n.baseAxis && n.valueAxis ? (r = C(o, n.baseAxis.dim),
					t = C(o, n.valueAxis.dim), n = MT[e.type](i, n.baseDataDim, n.valueDataDim, r, t), e.coord =
					n[0], e.value = n[1]) : e.coord = [null != e.xAxis ? e.xAxis : e.radiusAxis, null != e
					.yAxis ? e.yAxis : e.angleAxis
				]), null != e.coord && F(o))
				for (var a = e.coord, s = 0; s < 2; s++) MT[a[s]] && (a[s] = kT(i, i.mapDimension(o[s]), a[s]));
			else e.coord = [];
			return e
		}
	}

	function IT(t, e, n, i) {
		var r = {};
		return null != t.valueIndex || null != t.valueDim ? (r.valueDataDim = null != t.valueIndex ? e.getDimension(
			t.valueIndex) : t.valueDim, r.valueAxis = n.getAxis(function(t, e) {
			t = t.getData().getDimensionInfo(e);
			return t && t.coordDim
		}(i, r.valueDataDim)), r.baseAxis = n.getOtherAxis(r.valueAxis), r.baseDataDim = e.mapDimension(r
			.baseAxis.dim)) : (r.baseAxis = i.getBaseAxis(), r.valueAxis = n.getOtherAxis(r.baseAxis), r
			.baseDataDim = e.mapDimension(r.baseAxis.dim), r.valueDataDim = e.mapDimension(r.valueAxis.dim)), r
	}

	function CT(t, e) {
		return !(t && t.containData && e.coord && !wT(e)) || t.containData(e.coord)
	}

	function DT(t, r) {
		return t ? function(t, e, n, i) {
			return Xf(i < 2 ? t.coord && t.coord[i] : t.value, r[i])
		} : function(t, e, n, i) {
			return Xf(t.value, r[i])
		}
	}

	function kT(t, e, n) {
		var i, r;
		return "average" === n ? (r = i = 0, t.each(e, function(t, e) {
			isNaN(t) || (i += t, r++)
		}), i / r) : "median" === n ? t.getMedian(e) : t.getDataExtent(e)["max" === n ? 1 : 0]
	}
	var AT, LT = No(),
		fh = (u(PT, AT = Qg), PT.prototype.init = function() {
			this.markerGroupMap = N()
		}, PT.prototype.render = function(t, n, i) {
			var r = this,
				e = this.markerGroupMap;
			e.each(function(t) {
				LT(t).keep = !1
			}), n.eachSeries(function(t) {
				var e = mT.getMarkerModelFromSeries(t, r.type);
				e && r.renderSeries(t, e, n, i)
			}), e.each(function(t) {
				LT(t).keep || r.group.remove(t.group)
			})
		}, PT.prototype.markKeep = function(t) {
			LT(t).keep = !0
		}, PT.prototype.toggleBlurSeries = function(t, e) {
			var n = this;
			E(t, function(t) {
				t = mT.getMarkerModelFromSeries(t, n.type);
				t && t.getData().eachItemGraphicEl(function(t) {
					t && (e ? Al : Ll)(t)
				})
			})
		}, PT.type = "marker", PT);

	function PT() {
		var t = null !== AT && AT.apply(this, arguments) || this;
		return t.type = PT.type, t
	}

	function OT(a, s, l) {
		var u = s.coordinateSystem;
		a.each(function(t) {
			var e, n, i, r = a.getItemModel(t),
				o = W(r.get("x"), l.getWidth()),
				r = W(r.get("y"), l.getHeight());
			isNaN(o) || isNaN(r) ? s.getMarkerPosition ? i = s.getMarkerPosition(a.getValues(a.dimensions,
					t)) : u && (e = a.get(u.dimensions[0], t), n = a.get(u.dimensions[1], t), i = u
					.dataToPoint([e, n])) : i = [o, r], isNaN(o) || (i[0] = o), isNaN(r) || (i[1] = r), a
				.setItemLayout(t, i)
		})
	}
	u(ET, RT = fh), ET.prototype.updateTransform = function(t, e, n) {
		e.eachSeries(function(t) {
			var e = mT.getMarkerModelFromSeries(t, "markPoint");
			e && (OT(e.getData(), t, n), this.markerGroupMap.get(t.id).updateLayout())
		}, this)
	}, ET.prototype.renderSeries = function(t, u, e, n) {
		var i = t.coordinateSystem,
			r = t.id,
			h = t.getData(),
			o = this.markerGroupMap,
			o = o.get(r) || o.set(r, new mb),
			c = function(t, e, n) {
				var i;
				i = t ? B(t && t.dimensions, function(t) {
					return P(P({}, e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {}), {
						name: t,
						ordinalMeta: null
					})
				}) : [{
					name: "value",
					type: "float"
				}];
				var r = new Dv(i, n),
					n = B(n.get("data"), S(TT, e));
				t && (n = ht(n, S(CT, t)));
				t = DT(!!t, i);
				return r.initData(n, null, t), r
			}(i, t, u);
		u.setData(c), OT(u.getData(), t, n), c.each(function(t) {
			var e = c.getItemModel(t),
				n = e.getShallow("symbol"),
				i = e.getShallow("symbolSize"),
				r = e.getShallow("symbolRotate"),
				o = e.getShallow("symbolOffset"),
				a = e.getShallow("symbolKeepAspect"),
				s = ((D(n) || D(i) || D(r) || D(o)) && (s = u.getRawValue(t), l = u.getDataParams(t), D(
					n) && (n = n(s, l)), D(i) && (i = i(s, l)), D(r) && (r = r(s, l)), D(o)) && (o =
					o(s, l)), e.getModel("itemStyle").getItemStyle()),
				l = Xy(h, "color");
			s.fill || (s.fill = l), c.setItemVisual(t, {
				symbol: n,
				symbolSize: i,
				symbolRotate: r,
				symbolOffset: o,
				symbolKeepAspect: a,
				style: s
			})
		}), o.updateData(c), this.group.add(o.group), c.eachItemGraphicEl(function(t) {
			t.traverse(function(t) {
				k(t).dataModel = u
			})
		}), this.markKeep(o), o.group.silent = u.get("silent") || t.get("silent")
	}, ET.type = "markPoint";
	var RT, NT = ET;

	function ET() {
		var t = null !== RT && RT.apply(this, arguments) || this;
		return t.type = ET.type, t
	}
	Z_(function(t) {
		t.registerComponentModel(xT), t.registerComponentView(NT), t.registerPreprocessor(function(t) {
			dT(t.series, "markPoint") && (t.markPoint = t.markPoint || {})
		})
	});
	u(FT, zT = mT), FT.prototype.createMarkerModelFromSeries = function(t, e, n) {
		return new FT(t, e, n)
	}, FT.type = "markLine", FT.defaultOption = {
		z: 5,
		symbol: ["circle", "arrow"],
		symbolSize: [8, 16],
		symbolOffset: 0,
		precision: 2,
		tooltip: {
			trigger: "item"
		},
		label: {
			show: !0,
			position: "end",
			distance: 5
		},
		lineStyle: {
			type: "dashed"
		},
		emphasis: {
			label: {
				show: !0
			},
			lineStyle: {
				width: 3
			}
		},
		animationEasing: "linear"
	};
	var zT, BT = FT;

	function FT() {
		var t = null !== zT && zT.apply(this, arguments) || this;
		return t.type = FT.type, t
	}
	var VT, GT = eh.prototype,
		HT = sh.prototype,
		WT = function() {
			this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1
		};

	function UT() {
		return null !== VT && VT.apply(this, arguments) || this
	}

	function XT(t) {
		return isNaN(+t.cpx1) || isNaN(+t.cpy1)
	}
	u(UT, VT = WT);
	u(ZT, YT = j), ZT.prototype.getDefaultStyle = function() {
		return {
			stroke: "#000",
			fill: null
		}
	}, ZT.prototype.getDefaultShape = function() {
		return new WT
	}, ZT.prototype.buildPath = function(t, e) {
		(XT(e) ? GT : HT).buildPath.call(this, t, e)
	}, ZT.prototype.pointAt = function(t) {
		return (XT(this.shape) ? GT : HT).pointAt.call(this, t)
	}, ZT.prototype.tangentAt = function(t) {
		var e = this.shape,
			e = XT(e) ? [e.x2 - e.x1, e.y2 - e.y1] : HT.tangentAt.call(this, t);
		return jt(e, e)
	};
	var YT, qT = ZT;

	function ZT(t) {
		t = YT.call(this, t) || this;
		return t.type = "ec-line", t
	}
	var jT = ["fromSymbol", "toSymbol"];

	function KT(t) {
		return "_" + t + "Type"
	}

	function $T(t, e, n) {
		var i, r, o, a = e.getItemVisual(n, t);
		return a && "none" !== a ? (i = e.getItemVisual(n, t + "Size"), r = e.getItemVisual(n, t + "Rotate"), o = e
			.getItemVisual(n, t + "Offset"), e = e.getItemVisual(n, t + "KeepAspect"), a + (n = lm(i)) + um(o ||
				0, n) + (r || "") + (e || "")) : a
	}

	function QT(t, e, n) {
		var i, r, o, a = e.getItemVisual(n, t);
		if (a && "none" !== a) return o = e.getItemVisual(n, t + "Size"), i = e.getItemVisual(n, t + "Rotate"), r =
			e.getItemVisual(n, t + "Offset"), e = e.getItemVisual(n, t + "KeepAspect"), r = um(r || 0, n = lm(
				o)), (o = sm(a, -n[0] / 2 + r[0], -n[1] / 2 + r[1], n[0], n[1], null, e)).__specifiedRotation =
			null == i || isNaN(i) ? void 0 : +i * Math.PI / 180 || 0, o.name = t, o
	}

	function JT(t, e) {
		t.x1 = e[0][0], t.y1 = e[0][1], t.x2 = e[1][0], t.y2 = e[1][1], t.percent = 1;
		e = e[2];
		e ? (t.cpx1 = e[0], t.cpy1 = e[1]) : (t.cpx1 = NaN, t.cpy1 = NaN)
	}
	u(nI, tI = Ur), nI.prototype._createLine = function(n, i, t) {
		var e, r = n.hostModel,
			o = n.getItemLayout(i),
			o = (o = o, JT((e = new qT({
				name: "line",
				subPixelOptimize: !0
			})).shape, o), e);
		o.shape.percent = 0, Nh(o, {
			shape: {
				percent: 1
			}
		}, r, i), this.add(o), E(jT, function(t) {
			var e = QT(t, n, i);
			this.add(e), this[KT(t)] = $T(t, n, i)
		}, this), this._updateCommonStl(n, i, t)
	}, nI.prototype.updateData = function(i, r, t) {
		var e = i.hostModel,
			n = this.childOfName("line"),
			o = i.getItemLayout(r),
			a = {
				shape: {}
			};
		JT(a.shape, o), Rh(n, a, e, r), E(jT, function(t) {
			var e = $T(t, i, r),
				n = KT(t);
			this[n] !== e && (this.remove(this.childOfName(t)), t = QT(t, i, r), this.add(t)), this[n] =
				e
		}, this), this._updateCommonStl(i, r, t)
	}, nI.prototype.getLinePath = function() {
		return this.childAt(0)
	}, nI.prototype._updateCommonStl = function(n, t, e) {
		var i = n.hostModel,
			o = this.childOfName("line"),
			r = e && e.emphasisLineStyle,
			a = e && e.blurLineStyle,
			s = e && e.selectLineStyle,
			l = e && e.labelStatesModels,
			u = e && e.emphasisDisabled,
			h = e && e.focus,
			c = e && e.blurScope,
			p = (e && !n.hasItemOption || (r = (f = (e = n.getItemModel(t)).getModel("emphasis")).getModel(
					"lineStyle").getLineStyle(), a = e.getModel(["blur", "lineStyle"]).getLineStyle(), s = e
				.getModel(["select", "lineStyle"]).getLineStyle(), u = f.get("disabled"), h = f.get(
				"focus"), c = f.get("blurScope"), l = vc(e)), n.getItemVisual(t, "style")),
			d = p.stroke,
			f = (o.useStyle(p), o.style.fill = null, o.style.strokeNoScale = !0, o.ensureState("emphasis")
				.style = r, o.ensureState("blur").style = a, o.ensureState("select").style = s, E(jT, function(
					t) {
					var e = this.childOfName(t);
					if (e) {
						e.setColor(d), e.style.opacity = p.opacity;
						for (var n = 0; n < ol.length; n++) {
							var i = ol[n],
								r = o.getState(i);
							r && (r = r.style || {}, i = (i = e.ensureState(i)).style || (i.style = {}),
								null != r.stroke && (i[e.__isEmptyBrush ? "stroke" : "fill"] = r
								.stroke), null != r.opacity) && (i.opacity = r.opacity)
						}
						e.markRedraw()
					}
				}, this), i.getRawValue(t)),
			e = (mc(this, l, {
				labelDataIndex: t,
				labelFetcher: {
					getFormattedLabel: function(t, e) {
						return i.getFormattedLabel(t, e, n.dataType)
					}
				},
				inheritColor: d || "#000",
				defaultOpacity: p.opacity,
				defaultText: (null == f ? n.getName(t) : isFinite(f) ? io(f) : f) + ""
			}), this.getTextContent());
		e && (r = l.normal, e.__align = e.style.align, e.__verticalAlign = e.style.verticalAlign, e.__position =
				r.get("position") || "middle", F(a = r.get("distance")) || (a = [a, a]), e.__labelDistance = a),
			this.setTextConfig({
				position: null,
				local: !0,
				inside: !1
			}), Gl(this, h, c, u)
	}, nI.prototype.highlight = function() {
		Dl(this)
	}, nI.prototype.downplay = function() {
		kl(this)
	}, nI.prototype.updateLayout = function(t, e) {
		this.setLinePoints(t.getItemLayout(e))
	}, nI.prototype.setLinePoints = function(t) {
		var e = this.childOfName("line");
		JT(e.shape, t), e.dirty()
	}, nI.prototype.beforeUpdate = function() {
		var t = this.childOfName("fromSymbol"),
			e = this.childOfName("toSymbol"),
			n = this.getTextContent();
		if (t || e || n && !n.ignore) {
			for (var i = 1, r = this.parent; r;) r.scaleX && (i /= r.scaleX), r = r.parent;
			var o = this.childOfName("line");
			if (this.__dirty || o.__dirty) {
				var a = o.shape.percent,
					s = o.pointAt(0),
					l = o.pointAt(a),
					u = Xt([], l, s);
				if (jt(u, u), t && (t.setPosition(s), v(t, 0), t.scaleX = t.scaleY = i * a, t.markRedraw()),
					e && (e.setPosition(l), v(e, 1), e.scaleX = e.scaleY = i * a, e.markRedraw()), n && !n
					.ignore) {
					n.x = n.y = 0;
					var h = void(n.originX = n.originY = 0),
						c = void 0,
						t = n.__labelDistance,
						p = t[0] * i,
						d = t[1] * i,
						e = a / 2,
						f = o.tangentAt(e),
						t = [f[1], -f[0]],
						g = o.pointAt(e),
						y = (0 < t[1] && (t[0] = -t[0], t[1] = -t[1]), f[0] < 0 ? -1 : 1),
						m = ("start" !== n.__position && "end" !== n.__position && (a = -Math.atan2(f[1], f[0]),
							l[0] < s[0] && (a = Math.PI + a), n.rotation = a), void 0);
					switch (n.__position) {
						case "insideStartTop":
						case "insideMiddleTop":
						case "insideEndTop":
						case "middle":
							m = -d, c = "bottom";
							break;
						case "insideStartBottom":
						case "insideMiddleBottom":
						case "insideEndBottom":
							m = d, c = "top";
							break;
						default:
							m = 0, c = "middle"
					}
					switch (n.__position) {
						case "end":
							n.x = u[0] * p + l[0], n.y = u[1] * d + l[1], h = .8 < u[0] ? "left" : u[0] < -.8 ?
								"right" : "center", c = .8 < u[1] ? "top" : u[1] < -.8 ? "bottom" : "middle";
							break;
						case "start":
							n.x = -u[0] * p + s[0], n.y = -u[1] * d + s[1], h = .8 < u[0] ? "right" : u[0] < -
								.8 ? "left" : "center", c = .8 < u[1] ? "bottom" : u[1] < -.8 ? "top" :
								"middle";
							break;
						case "insideStartTop":
						case "insideStart":
						case "insideStartBottom":
							n.x = p * y + s[0], n.y = s[1] + m, h = f[0] < 0 ? "right" : "left", n.originX = -
								p * y, n.originY = -m;
							break;
						case "insideMiddleTop":
						case "insideMiddle":
						case "insideMiddleBottom":
						case "middle":
							n.x = g[0], n.y = g[1] + m, h = "center", n.originY = -m;
							break;
						case "insideEndTop":
						case "insideEnd":
						case "insideEndBottom":
							n.x = -p * y + l[0], n.y = l[1] + m, h = 0 <= f[0] ? "right" : "left", n.originX =
								p * y, n.originY = -m
					}
					n.scaleX = n.scaleY = i, n.setStyle({
						verticalAlign: n.__verticalAlign || c,
						align: n.__align || h
					})
				}
			}
		}

		function v(t, e) {
			var n, i = t.__specifiedRotation;
			null == i ? (n = o.tangentAt(e), t.attr("rotation", (1 === e ? -1 : 1) * Math.PI / 2 - Math.atan2(n[
				1], n[0]))) : t.attr("rotation", i)
		}
	};
	var tI, eI = nI;

	function nI(t, e, n) {
		var i = tI.call(this) || this;
		return i._createLine(t, e, n), i
	}
	rI.prototype.updateData = function(n) {
		var i = this,
			e = (this._progressiveEls = null, this.group),
			r = this._lineData,
			o = (this._lineData = n, r || e.removeAll(), oI(n));
		n.diff(r).add(function(t) {
			i._doAdd(n, t, o)
		}).update(function(t, e) {
			i._doUpdate(r, n, e, t, o)
		}).remove(function(t) {
			e.remove(r.getItemGraphicEl(t))
		}).execute()
	}, rI.prototype.updateLayout = function() {
		var n = this._lineData;
		n && n.eachItemGraphicEl(function(t, e) {
			t.updateLayout(n, e)
		}, this)
	}, rI.prototype.incrementalPrepareUpdate = function(t) {
		this._seriesScope = oI(t), this._lineData = null, this.group.removeAll()
	}, rI.prototype.incrementalUpdate = function(t, e) {
		function n(t) {
			var e;
			t.isGroup || (e = t).animators && 0 < e.animators.length || (t.incremental = !0, t.ensureState(
				"emphasis").hoverLayer = !0)
		}
		this._progressiveEls = [];
		for (var i, r = t.start; r < t.end; r++) sI(e.getItemLayout(r)) && ((i = new this._LineCtor(e, r, this
				._seriesScope)).traverse(n), this.group.add(i), e.setItemGraphicEl(r, i), this
			._progressiveEls.push(i))
	}, rI.prototype.remove = function() {
		this.group.removeAll()
	}, rI.prototype.eachRendered = function(t) {
		pc(this._progressiveEls || this.group, t)
	}, rI.prototype._doAdd = function(t, e, n) {
		sI(t.getItemLayout(e)) && (n = new this._LineCtor(t, e, n), t.setItemGraphicEl(e, n), this.group.add(n))
	}, rI.prototype._doUpdate = function(t, e, n, i, r) {
		t = t.getItemGraphicEl(n);
		sI(e.getItemLayout(i)) ? (t ? t.updateData(e, i, r) : t = new this._LineCtor(e, i, r), e
			.setItemGraphicEl(i, t), this.group.add(t)) : this.group.remove(t)
	};
	var iI = rI;

	function rI(t) {
		this.group = new Ur, this._LineCtor = t || eI
	}

	function oI(t) {
		var t = t.hostModel,
			e = t.getModel("emphasis");
		return {
			lineStyle: t.getModel("lineStyle").getLineStyle(),
			emphasisLineStyle: e.getModel(["lineStyle"]).getLineStyle(),
			blurLineStyle: t.getModel(["blur", "lineStyle"]).getLineStyle(),
			selectLineStyle: t.getModel(["select", "lineStyle"]).getLineStyle(),
			emphasisDisabled: e.get("disabled"),
			blurScope: e.get("blurScope"),
			focus: e.get("focus"),
			labelStatesModels: vc(t)
		}
	}

	function aI(t) {
		return isNaN(t[0]) || isNaN(t[1])
	}

	function sI(t) {
		return t && !aI(t[0]) && !aI(t[1])
	}

	function lI(t, e, n, i) {
		var r, o, a, s, l = t.getData();
		return (e = [TT(t, (n = F(i) ? i : "min" === (r = i.type) || "max" === r || "average" === r || "median" ===
			r || null != i.xAxis || null != i.yAxis ? (o = s = void 0, o = null != i.yAxis ||
				null != i.xAxis ? (s = e.getAxis(null != i.yAxis ? "y" : "x"), bt(i.yAxis, i
				.xAxis)) : (s = (e = IT(i, l, e, t)).valueAxis, kT(l, Nv(l, e.valueDataDim), r)),
				e = 1 - (l = "x" === s.dim ? 0 : 1), s = {
					coord: []
				}, (a = y(i)).type = null, a.coord = [], a.coord[e] = -1 / 0, s.coord[e] = 1 / 0,
				0 <= (e = n.get("precision")) && G(o) && (o = +o.toFixed(Math.min(e, 20))), a.coord[
					l] = s.coord[l] = o, [a, s, {
					type: r,
					valueIndex: i.valueIndex,
					value: o
				}]) : [])[0]), TT(t, n[1]), P({}, n[2])])[2].type = e[2].type || null, d(e[2], e[0]), d(e[2], e[
			1]), e
	}
	var uI = No();

	function hI(t) {
		return !isNaN(t) && !isFinite(t)
	}

	function cI(t, e, n, i) {
		var r = 1 - t,
			o = i.dimensions[t];
		return hI(e[r]) && hI(n[r]) && e[t] === n[t] && i.getAxis(o).containData(e[t])
	}

	function pI(t, e) {
		if ("cartesian2d" === t.type) {
			var n = e[0].coord,
				i = e[1].coord;
			if (n && i && (cI(1, n, i, t) || cI(0, n, i, t))) return !0
		}
		return CT(t, e[0]) && CT(t, e[1])
	}

	function dI(t, e, n, i, r) {
		var o, a, s = i.coordinateSystem,
			l = t.getItemModel(e),
			u = W(l.get("x"), r.getWidth()),
			l = W(l.get("y"), r.getHeight());
		isNaN(u) || isNaN(l) ? (o = i.getMarkerPosition ? i.getMarkerPosition(t.getValues(t.dimensions, e)) : (a = s
				.dimensions, r = t.get(a[0], e), i = t.get(a[1], e), s.dataToPoint([r, i])), Ox(s,
				"cartesian2d") && (r = s.getAxis("x"), i = s.getAxis("y"), a = s.dimensions, hI(t.get(a[0],
				e)) ? o[0] = r.toGlobalCoord(r.getExtent()[n ? 0 : 1]) : hI(t.get(a[1], e)) && (o[1] = i
					.toGlobalCoord(i.getExtent()[n ? 0 : 1]))), isNaN(u) || (o[0] = u), isNaN(l) || (o[1] = l)) :
			o = [u, l], t.setItemLayout(e, o)
	}
	u(yI, fI = fh), yI.prototype.updateTransform = function(t, e, o) {
		e.eachSeries(function(e) {
			var n, i, r, t = mT.getMarkerModelFromSeries(e, "markLine");
			t && (n = t.getData(), i = uI(t).from, r = uI(t).to, i.each(function(t) {
				dI(i, t, !0, e, o), dI(r, t, !1, e, o)
			}), n.each(function(t) {
				n.setItemLayout(t, [i.getItemLayout(t), r.getItemLayout(t)])
			}), this.markerGroupMap.get(e.id).updateLayout())
		}, this)
	}, yI.prototype.renderSeries = function(o, e, t, a) {
		var n = o.coordinateSystem,
			i = o.id,
			s = o.getData(),
			r = this.markerGroupMap,
			r = r.get(i) || r.set(i, new iI),
			i = (this.group.add(r.group), function(t, e, n) {
				var i;
				i = t ? B(t && t.dimensions, function(t) {
					return P(P({}, e.getData().getDimensionInfo(e.getData().mapDimension(t)) ||
					{}), {
						name: t,
						ordinalMeta: null
					})
				}) : [{
					name: "value",
					type: "float"
				}];
				var r = new Dv(i, n),
					o = new Dv(i, n),
					a = new Dv([], n),
					n = B(n.get("data"), S(lI, e, t, n));
				t && (n = ht(n, S(pI, t)));
				t = DT(!!t, i);
				return r.initData(B(n, function(t) {
					return t[0]
				}), null, t), o.initData(B(n, function(t) {
					return t[1]
				}), null, t), a.initData(B(n, function(t) {
					return t[2]
				})), a.hasItemOption = !0, {
					from: r,
					to: o,
					line: a
				}
			}(n, o, e)),
			l = i.from,
			u = i.to,
			h = i.line,
			c = (uI(e).from = l, uI(e).to = u, e.setData(h), e.get("symbol")),
			p = e.get("symbolSize"),
			d = e.get("symbolRotate"),
			f = e.get("symbolOffset");

		function g(t, e, n) {
			var i = t.getItemModel(e),
				r = (dI(t, e, n, o, a), i.getModel("itemStyle").getItemStyle());
			null == r.fill && (r.fill = Xy(s, "color")), t.setItemVisual(e, {
				symbolKeepAspect: i.get("symbolKeepAspect"),
				symbolOffset: R(i.get("symbolOffset", !0), f[n ? 0 : 1]),
				symbolRotate: R(i.get("symbolRotate", !0), d[n ? 0 : 1]),
				symbolSize: R(i.get("symbolSize"), p[n ? 0 : 1]),
				symbol: R(i.get("symbol", !0), c[n ? 0 : 1]),
				style: r
			})
		}
		F(c) || (c = [c, c]), F(p) || (p = [p, p]), F(d) || (d = [d, d]), F(f) || (f = [f, f]), i.from.each(
			function(t) {
				g(l, t, !0), g(u, t, !1)
			}), h.each(function(t) {
			var e = h.getItemModel(t).getModel("lineStyle").getLineStyle();
			h.setItemLayout(t, [l.getItemLayout(t), u.getItemLayout(t)]), null == e.stroke && (e
				.stroke = l.getItemVisual(t, "style").fill), h.setItemVisual(t, {
				fromSymbolKeepAspect: l.getItemVisual(t, "symbolKeepAspect"),
				fromSymbolOffset: l.getItemVisual(t, "symbolOffset"),
				fromSymbolRotate: l.getItemVisual(t, "symbolRotate"),
				fromSymbolSize: l.getItemVisual(t, "symbolSize"),
				fromSymbol: l.getItemVisual(t, "symbol"),
				toSymbolKeepAspect: u.getItemVisual(t, "symbolKeepAspect"),
				toSymbolOffset: u.getItemVisual(t, "symbolOffset"),
				toSymbolRotate: u.getItemVisual(t, "symbolRotate"),
				toSymbolSize: u.getItemVisual(t, "symbolSize"),
				toSymbol: u.getItemVisual(t, "symbol"),
				style: e
			})
		}), r.updateData(h), i.line.eachItemGraphicEl(function(t) {
			k(t).dataModel = e, t.traverse(function(t) {
				k(t).dataModel = e
			})
		}), this.markKeep(r), r.group.silent = e.get("silent") || o.get("silent")
	}, yI.type = "markLine";
	var fI, gI = yI;

	function yI() {
		var t = null !== fI && fI.apply(this, arguments) || this;
		return t.type = yI.type, t
	}
	Z_(function(t) {
		t.registerComponentModel(BT), t.registerComponentView(gI), t.registerPreprocessor(function(t) {
			dT(t.series, "markLine") && (t.markLine = t.markLine || {})
		})
	});
	u(_I, mI = mT), _I.prototype.createMarkerModelFromSeries = function(t, e, n) {
		return new _I(t, e, n)
	}, _I.type = "markArea", _I.defaultOption = {
		z: 1,
		tooltip: {
			trigger: "item"
		},
		animation: !1,
		label: {
			show: !0,
			position: "top"
		},
		itemStyle: {
			borderWidth: 0
		},
		emphasis: {
			label: {
				show: !0,
				position: "top"
			}
		}
	};
	var mI, vI = _I;

	function _I() {
		var t = null !== mI && mI.apply(this, arguments) || this;
		return t.type = _I.type, t
	}

	function xI(t, e, n, i) {
		var r, o = i[0],
			i = i[1];
		if (o && i) return o = TT(t, o), t = TT(t, i), i = o.coord, r = t.coord, i[0] = bt(i[0], -1 / 0), i[1] = bt(
			i[1], -1 / 0), r[0] = bt(r[0], 1 / 0), r[1] = bt(r[1], 1 / 0), (i = rt([{}, o, t])).coord = [o
			.coord, t.coord
		], i.x0 = o.x, i.y0 = o.y, i.x1 = t.x, i.y1 = t.y, i
	}
	var bI = No();

	function wI(t) {
		return !isNaN(t) && !isFinite(t)
	}

	function SI(t, e, n) {
		t = 1 - t;
		return wI(e[t]) && wI(n[t])
	}

	function MI(t, e) {
		var n, i, r, o = e.coord[0],
			a = e.coord[1],
			s = {
				coord: o,
				x: e.x0,
				y: e.y0
			},
			e = {
				coord: a,
				x: e.x1,
				y: e.y1
			};
		return Ox(t, "cartesian2d") ? !((!o || !a || !SI(1, o, a) && !SI(0, o, a)) && (i = s, r = e, n = t) && n
			.containZone && i.coord && r.coord && !wT(i) && !wT(r)) || n.containZone(i.coord, r.coord) : CT(t,
			s) || CT(t, e)
	}

	function TI(t, e, n, i, r) {
		var o, a, s, l, u, h, c = i.coordinateSystem,
			p = t.getItemModel(e),
			d = W(p.get(n[0]), r.getWidth()),
			p = W(p.get(n[1]), r.getHeight());
		return isNaN(d) || isNaN(p) ? (h = i.getMarkerPosition ? (r = t.getValues(["x0", "y0"], e), s = t.getValues(
			["x1", "y1"], e), a = c.clampData(r), h = c.clampData(s), o = [], "x0" === n[0] ? o[0] = (a[
			0] > h[0] ? s : r)[0] : o[0] = (a[0] > h[0] ? r : s)[0], "y0" === n[1] ? o[1] = (a[1] > h[
			1] ? s : r)[1] : o[1] = (a[1] > h[1] ? r : s)[1], i.getMarkerPosition(o, n, !0)) : (a = [l = t
			.get(n[0], e), u = t.get(n[1], e)
		], c.clampData && c.clampData(a, a), c.dataToPoint(a, !0)), Ox(c, "cartesian2d") && (r = c.getAxis(
				"x"), s = c.getAxis("y"), l = t.get(n[0], e), u = t.get(n[1], e), wI(l) ? h[0] = r
			.toGlobalCoord(r.getExtent()["x0" === n[0] ? 0 : 1]) : wI(u) && (h[1] = s.toGlobalCoord(s
				.getExtent()["y0" === n[1] ? 0 : 1]))), isNaN(d) || (h[0] = d), isNaN(p) || (h[1] = p)) : h = [
			d, p
		], h
	}
	var II, CI = [
			["x0", "y0"],
			["x1", "y0"],
			["x1", "y1"],
			["x0", "y1"]
		],
		DI = (u(kI, II = fh), kI.prototype.updateTransform = function(t, e, r) {
			e.eachSeries(function(n) {
				var i, t = mT.getMarkerModelFromSeries(n, "markArea");
				t && (i = t.getData()).each(function(e) {
					var t = B(CI, function(t) {
						return TI(i, e, t, n, r)
					});
					i.setItemLayout(e, t), i.getItemGraphicEl(e).setShape("points", t)
				})
			}, this)
		}, kI.prototype.renderSeries = function(a, r, t, s) {
			var l = a.coordinateSystem,
				e = a.id,
				u = a.getData(),
				n = this.markerGroupMap,
				i = n.get(e) || n.set(e, {
					group: new Ur
				}),
				h = (this.group.add(i.group), this.markKeep(i), function(t, n, e) {
					var i, r; {
						var o;
						i = t ? (o = B(t && t.dimensions, function(t) {
							var e = n.getData();
							return P(P({}, e.getDimensionInfo(e.mapDimension(t)) || {}), {
								name: t,
								ordinalMeta: null
							})
						}), r = B(["x0", "y0", "x1", "y1"], function(t, e) {
							return {
								name: t,
								type: o[e % 2].type
							}
						}), new Dv(r, e)) : new Dv(r = [{
							name: "value",
							type: "float"
						}], e)
					}
					e = B(e.get("data"), S(xI, n, t, e));
					t && (e = ht(e, S(MI, t)));
					t = t ? function(t, e, n, i) {
						return Xf(t.coord[Math.floor(i / 2)][i % 2], r[i])
					} : function(t, e, n, i) {
						return Xf(t.value, r[i])
					};
					return i.initData(e, null, t), i.hasItemOption = !0, i
				}(l, a, r));
			r.setData(h), h.each(function(e) {
				var t = B(CI, function(t) {
						return TI(h, e, t, a, s)
					}),
					n = l.getAxis("x").scale,
					i = l.getAxis("y").scale,
					r = n.getExtent(),
					o = i.getExtent(),
					n = [n.parse(h.get("x0", e)), n.parse(h.get("x1", e))],
					i = [i.parse(h.get("y0", e)), i.parse(h.get("y1", e))],
					r = (ro(n), ro(i), !(r[0] > n[1] || r[1] < n[0] || o[0] > i[1] || o[1] < i[0])),
					n = (h.setItemLayout(e, {
						points: t,
						allClipped: !r
					}), h.getItemModel(e).getModel("itemStyle").getItemStyle()),
					o = Xy(u, "color");
				n.fill || (n.fill = o, V(n.fill) && (n.fill = wi(n.fill, .4))), n.stroke || (n.stroke =
					o), h.setItemVisual(e, "style", n)
			}), h.diff(bI(i).data).add(function(t) {
				var e = h.getItemLayout(t);
				e.allClipped || (e = new Yu({
					shape: {
						points: e.points
					}
				}), h.setItemGraphicEl(t, e), i.group.add(e))
			}).update(function(t, e) {
				var e = bI(i).data.getItemGraphicEl(e),
					n = h.getItemLayout(t);
				n.allClipped ? e && i.group.remove(e) : (e ? Rh(e, {
					shape: {
						points: n.points
					}
				}, r, t) : e = new Yu({
					shape: {
						points: n.points
					}
				}), h.setItemGraphicEl(t, e), i.group.add(e))
			}).remove(function(t) {
				t = bI(i).data.getItemGraphicEl(t);
				i.group.remove(t)
			}).execute(), h.eachItemGraphicEl(function(t, e) {
				var n = h.getItemModel(e),
					i = h.getItemVisual(e, "style");
				t.useStyle(h.getItemVisual(e, "style")), mc(t, vc(n), {
					labelFetcher: r,
					labelDataIndex: e,
					defaultText: h.getName(e) || "",
					inheritColor: V(i.fill) ? wi(i.fill, 1) : "#000"
				}), Ul(t, n), Gl(t, null, null, n.get(["emphasis", "disabled"])), k(t).dataModel = r
			}), bI(i).data = h, i.group.silent = r.get("silent") || a.get("silent")
		}, kI.type = "markArea", kI);

	function kI() {
		var t = null !== II && II.apply(this, arguments) || this;
		return t.type = kI.type, t
	}
	Z_(function(t) {
		t.registerComponentModel(vI), t.registerComponentView(DI), t.registerPreprocessor(function(t) {
			dT(t.series, "markArea") && (t.markArea = t.markArea || {})
		})
	}), Z_(mx);
	var AI = {
			value: "eq",
			"<": "lt",
			"<=": "lte",
			">": "gt",
			">=": "gte",
			"=": "eq",
			"!=": "ne",
			"<>": "ne"
		},
		LI = (PI.prototype.evaluate = function(t) {
			var e = typeof t;
			return V(e) ? this._condVal.test(t) : !!G(e) && this._condVal.test(t + "")
		}, PI);

	function PI(t) {
		null == (this._condVal = V(t) ? new RegExp(t) : _t(t) ? t : null) && f("")
	}
	RI.prototype.evaluate = function() {
		return this.value
	};
	var OI = RI;

	function RI() {}
	EI.prototype.evaluate = function() {
		for (var t = this.children, e = 0; e < t.length; e++)
			if (!t[e].evaluate()) return !1;
		return !0
	};
	var NI = EI;

	function EI() {}
	BI.prototype.evaluate = function() {
		for (var t = this.children, e = 0; e < t.length; e++)
			if (t[e].evaluate()) return !0;
		return !1
	};
	var zI = BI;

	function BI() {}
	VI.prototype.evaluate = function() {
		return !this.child.evaluate()
	};
	var FI = VI;

	function VI() {}
	HI.prototype.evaluate = function() {
		for (var t = !!this.valueParser, e = (0, this.getValue)(this.valueGetterParam), n = t ? this
				.valueParser(e) : null, i = 0; i < this.subCondList.length; i++)
			if (!this.subCondList[i].evaluate(t ? n : e)) return !1;
		return !0
	};
	var GI = HI;

	function HI() {}

	function WI(t, e) {
		if (!0 === t || !1 === t) return (n = new OI).value = t, n;
		var n;
		if (XI(t) || f(""), t.and) return UI("and", t, e);
		if (t.or) return UI("or", t, e);
		if (t.not) return n = e, XI(o = (o = t).not) || f(""), (l = new FI).child = WI(o, n), l.child || f(""), l;
		for (var i = t, r = e, o = r.prepareGetValue(i), a = [], s = ct(i), l = i.parser, u = l ? qf(l) : null, h =
				0; h < s.length; h++) {
			var c, p = s[h];
			"parser" === p || r.valueGetterAttrMap.get(p) || (c = Bt(AI, p) ? AI[p] : p, p = i[p], p = u ? u(p) : p,
				(c = function(t, e) {
					return "eq" === t || "ne" === t ? new Jf("eq" === t, e) : Bt(Zf, t) ? new jf(t, e) :
						null
				}(c, p) || "reg" === c && new LI(p)) || f(""), a.push(c))
		}
		return a.length || f(""), (l = new GI).valueGetterParam = o, l.valueParser = u, l.getValue = r.getValue, l
			.subCondList = a, l
	}

	function UI(t, e, n) {
		e = e[t], F(e) || f(""), e.length || f(""), t = new("and" === t ? NI : zI);
		return t.children = B(e, function(t) {
			return WI(t, n)
		}), t.children.length || f(""), t
	}

	function XI(t) {
		return O(t) && !lt(t)
	}
	qI.prototype.evaluate = function() {
		return this._cond.evaluate()
	};
	var YI = qI;

	function qI(t, e) {
		this._cond = WI(t, e)
	}
	var ZI = {
			type: "echarts:filter",
			transform: function(t) {
				for (var e, n, i = t.upstream, r = (t = t.config, n = {
						valueGetterAttrMap: N({
							dimension: !0
						}),
						prepareGetValue: function(t) {
							var e = t.dimension,
								t = (Bt(t, "dimension") || f(""), i.getDimensionInfo(e));
							return t || f(""), {
								dimIdx: t.index
							}
						},
						getValue: function(t) {
							return i.retrieveValueFromItem(e, t.dimIdx)
						}
					}, new YI(t, n)), o = [], a = 0, s = i.count(); a < s; a++) e = i.getRawDataItem(a), r
					.evaluate() && o.push(e);
				return {
					data: o
				}
			}
		},
		jI = {
			type: "echarts:sort",
			transform: function(t) {
				for (var a = t.upstream, t = t.config, t = So(t), s = (t.length || f(""), []), t = (E(t,
						function(t) {
							var e = t.dimension,
								n = t.order,
								i = t.parser,
								t = t.incomparable,
								e = (null == e && f(""), "asc" !== n && "desc" !== n && f(""), t &&
									"min" !== t && "max" !== t && f(""), "asc" !== n && "desc" !== n &&
									f(""), a.getDimensionInfo(e)),
								r = (e || f(""), i ? qf(i) : null);
							i && !r && f(""), s.push({
								dimIdx: e.index,
								parser: r,
								comparator: new $f(n, t)
							})
						}), a.sourceFormat), e = (t !== td && t !== ed && f(""), []), n = 0, i = a.count(); n <
					i; n++) e.push(a.getRawDataItem(n));
				return e.sort(function(t, e) {
					for (var n = 0; n < s.length; n++) {
						var i = s[n],
							r = a.retrieveValueFromItem(t, i.dimIdx),
							o = a.retrieveValueFromItem(e, i.dimIdx),
							i = (i.parser && (r = i.parser(r), o = i.parser(o)), i.comparator.evaluate(
								r, o));
						if (0 !== i) return i
					}
					return 0
				}), {
					data: e
				}
			}
		};
	Z_(function(t) {
			t.registerTransform(ZI), t.registerTransform(jI)
		}), t.Axis = Nc, t.ChartView = iy, t.ComponentModel = g, t.ComponentView = Qg, t.List = Dv, t.Model = Vc, t
		.PRIORITY = tm, t.SeriesModel = Ug, t.color = xi, t.connect = function(e) {
			var t;
			return F(e) && (t = e, e = null, E(t, function(t) {
				null != t.group && (e = t.group)
			}), e = e || "g_" + N0++, E(t, function(t) {
				t.group = e
			})), O0[e] = !0, e
		}, t.dataTool = {}, t.dependencies = {
			zrender: "5.5.0"
		}, t.disConnect = Jy, t.disconnect = z0, t.dispose = function(t) {
			V(t) ? t = P0[t] : t instanceof v0 || (t = B0(t)), t instanceof v0 && !t.isDisposed() && t.dispose()
		}, t.env = w, t.extendChartView = function(t) {
			return t = iy.extend(t), iy.registerClass(t), t
		}, t.extendComponentModel = function(t) {
			return t = g.extend(t), g.registerClass(t), t
		}, t.extendComponentView = function(t) {
			return t = Qg.extend(t), Qg.registerClass(t), t
		}, t.extendSeriesModel = function(t) {
			return t = Ug.extend(t), Ug.registerClass(t), t
		}, t.format = Oc, t.getCoordinateSystemDimensions = function(t) {
			if (t = Ld.get(t)) return t.getDimensionsInfo ? t.getDimensionsInfo() : t.dimensions.slice()
		}, t.getInstanceByDom = B0, t.getInstanceById = function(t) {
			return P0[t]
		}, t.getMap = function(t) {
			var e = Gm.getMap;
			return e && e(t)
		}, t.graphic = ip, t.helper = em, t.init = function(t, e, n) {
			var i = !(n && n.ssr);
			if (i) {
				var r = B0(t);
				if (r) return r
			}
			return (r = new v0(t, e, n)).id = "ec_" + R0++, P0[r.id] = r, i && Go(t, E0, r.id), f0(r), Vm.trigger(
				"afterinit", r), r
		}, t.innerDrawElementOnCanvas = Om, t.matrix = Ve, t.number = ea, t.parseGeoJSON = c1, t.parseGeoJson = c1,
		t.registerAction = X0, t.registerCoordinateSystem = Y0, t.registerLayout = q0, t.registerLoading = $0, t
		.registerLocale = $c, t.registerMap = Q0, t.registerPostInit = H0, t.registerPostUpdate = W0, t
		.registerPreprocessor = V0, t.registerProcessor = G0, t.registerTheme = F0, t.registerTransform = J0, t
		.registerUpdateLifecycle = U0, t.registerVisual = Z0, t.setCanvasCreator = function(t) {
			M({
				createCanvas: t
			})
		}, t.setPlatformAPI = M, t.throttle = dy, t.time = ec, t.use = Z_, t.util = Uy, t.vector = re, t.version =
		"5.5.0", t.zrUtil = Gt, t.zrender = to
});